【golang学习记录】环境搭建

一. 概述

本文是【golang学习记录】系列文章的第一篇,安装Go语言及搭建Go语言开发环境,接下来将详细记录自己学习 go 语言的过程,一方面是为了巩固自己学到的内容,另一方面希望对有同样需求的小伙伴提供一些帮助。

二. 下载并安装 Go

Go官网下载地址(在国内无法访问):https://golang.org/dl/

Go官方镜像站(推荐)https://golang.google.cn/dl/

在Windows中通过可执行文件来安装会自动配置 GOROOT 环境变量,省去了手动配置环境变量的麻烦,个人觉得通过下载 zip 包,配置环境变量安装能够更好理解安装流程。

我这里是在 windows 中安装 Go ,所以直接选择 windows 的安装方式即可,如下图所示:

下载完成后,双击下载好的文件,然后按照下图所示步骤安装:

如果你本地已经安装了低版本的 Go,那么点击 Next 后会提示你卸载旧版的 Go,根据提示卸载即可。

等待安装完成,出现下图,即表示安装成功:

因为通过可执行文件安装过程中已经自动配置好了环境变量,所以直接在 CMD 控制台输入 go version 命令验证 Go 是否安装成功:

> go version
go version go1.17.3 windows/amd64

三. Go 环境变量配置和说明

CMD 控制台输入 go env 命令查看配置的环境变量:

C:\Users\admin>go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\admin\AppData\Local\go-build
set GOENV=C:\Users\admin\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS= -mod=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\admin\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\admin\go
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=D:\environment\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=D:\environment\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.3
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\admin\AppData\Local\Temp\go-build3769788971=/tmp/
go-build -gno-record-gcc-switches

Go1.14版本之后,都推荐使用go mod模式来管理依赖环境了,也不再强制我们把代码必须写在GOPATH下面的src目录了,你可以在你电脑的任意位置编写go代码。

其中我们比较关心的环境变量有如下几个:

  • GOPATH:可以理解为 go 的工作目录,此目录包含两个文件夹

    -- bin:存放 go 编译生成的可执行文件

    -- pkg:存放 go 项目依赖的第三方 module

  • GOROOT:是我们安装 go 开发包的路径

  • GO111MODULE:要启用go module支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:offonauto,默认值是on

    1. GO111MODULE=off禁用模块支持,编译时会从GOPATHvendor文件夹中查找包。
    2. GO111MODULE=on启用模块支持,编译时会忽略GOPATHvendor文件夹,只根据 go.mod下载依赖。
    3. GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持。

    使用 go module 管理依赖后会在项目根目录下生成两个文件go.modgo.sum

  • GOPROXY:Go1.13之后GOPROXY默认值为https://proxy.golang.org,在国内是无法访问的,所以十分建议大家设置GOPROXY,这里我推荐使用goproxy.cn。通过如下命令设置:

    go env -w GOPROXY=https://goproxy.cn,direct

四. Go 开发工具

Go 采用的是 UTF-8 编码的文本文件存放源代码,理论上使用任何一款文本编辑器都可以做 Go 语言开发,比较常用的开发工具是 VS CodeGolandVS Code是微软开源的编辑器,而Goland是 jetbrains 出品的付费 IDE。

因为我是做的比较多的是 Java 开发,使用的是 idea,并且习惯了 idea 不想下载其他的开发工具,所以这里介绍在 idea 中安装 Go 插件进行开发。

打开 idea 在 Plugins 中搜索 go ,安装下图所示的插件:

安装完成后,最好是重启一下 idea,让插件生效。安装好插件之后,go 的开发工具其实就配置好了,

五. 第一个 Go 程序

现在我们来创建第一个Go项目——hello-go,在我们桌面创建一个hello-go目录。

使用 go module 模式新建项目时,我们需要通过 go mod init 项目名 命令对项目进行初始化,该命令会在项目根目录下生成 go.mod 文件。例如,我们使用hello-go 作为我们第一个Go项目的名称,在前面创建目录的 cmd 命令行中执行如下命令:

go mod init hello-go

查看生成的 go.mod 文件:

> cat go.mod
module hello-go go 1.17

使用 idea 打开 hello-go 目录,idea 会提示你没有配置 GOROOT,我们根据提示,添加安装的 GOROOT路径即可。选择项目,右键新建一个 Go File 文件:

main.go 文件中输入如下内容:

package main  // 声明 main 包,表明当前是一个可执行程序

import "fmt"  // 导入内置 fmt 包

func main(){  // main函数,是程序执行的入口
fmt.Println("Hello World!") // 在终端打印 Hello World!
}

在 idea 中的第一个 Go 程序就运行成功了~

cmd 终端中输入命令 go run main.go也可以执行程序,该命令本质上也是先编译再执行。

编译 Go 程序为可执行文件

go build命令表示将源代码编译成可执行文件。

在 idea 的终端中执行下面的命令,如下图所示:

默认我们go build的可执行文件都是当前操作系统可执行的文件,它先编译源代码在当前目录生成可执行文件,所以我们可以在当前目录执行 hello-go.exe,如果我们希望在其他地方也可以执行,则需要使用 go install 命令。

go install表示安装的意思,它先编译源代码得到可执行文件,然后将可执行文件移动到GOPATHbin 目录下。因为我们的环境变量中配置了GOPATH下的 bin 目录,所以我们就可以在任意地方直接执行可执行文件了。

参考文档

https://www.liwenzhou.com/posts/Go/install_go_dev/

【golang学习记录】环境搭建的更多相关文章

  1. 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)

    前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...

  2. golang开发android环境搭建_window

    golang开发android环境搭建介绍 一 安装依赖软件: git:版本管理 go:  go开发环境(版本>=1.5),可直接下载window版的go安装包. android studio: ...

  3. hive_学习_01_hive环境搭建(单机)

    一.前言 本文承接上一篇:hbase_学习_01_HBase环境搭建(单机),主要是搭建 hive 的单机环境 二.环境准备 1.说明 hive 的下载来源有: 官方版本:http://archive ...

  4. hbase_学习_01_HBase环境搭建(单机)

    一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机)  ,主要是搭建HBase的单机环境 二.环境准备 1.说明 hbase 的下载来源有: 官方版本:http://arc ...

  5. hadoop_学习_02_Hadoop环境搭建(单机)

    一.环境准备 1.说明 hadoop的下载来源有: 官方版本:http://archive.apache.org/dist/hadoop/ CDH版本:http://archive.cloudera. ...

  6. 从0开始学爬虫9之requests库的学习之环境搭建

    从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...

  7. Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda

    Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...

  8. ubuntu 深度学习cuda环境搭建,docker-nvidia 2019-02

    ubuntu 深度学习cuda环境搭建 ubuntu系统版本 18.04 查看GPU型号(NVS 315 性能很差,比没有强) 首先最好有ssh服务,以下操作都是远程ssh执行 lspci | gre ...

  9. Python基础学习之环境搭建

    Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的.今天我们将带领Python零基础的初学者完成入门的第一步——环境搭建.本文会先来区分几个在P ...

随机推荐

  1. not_the_same_3dsctf_2016

    老样子查看程序开启的保护 可以看到程序是32位的程序开启了nx保护,把程序放入ida编译一下 shift+f12可以看到flag.txt,我们用ctrl+x跟随一下 看到程序,直接想到的就是通过溢出获 ...

  2. Eclipse切换不同版本的jdk

    var会在java1.8中报错,安装10版本以上的jdk可以解决问题,但是安装后Eclipse无法正常工作,后来发现是Eclipse没有切换版本,在网上找了好多教程都是切换系统变量,后来我发现可以直接 ...

  3. CF135A Replacement 题解

    Content 有 \(n\) 个数 \(a_1,a_2,a_3,...,a_n\),试用 \(1\) ~ \(10^9\) 之间的数(除了本身)代替其中的一个数,使得这 \(n\) 个数的总和最小, ...

  4. mail如何在linux中发送邮件,使用163邮箱发信。

    如何在linux中发送邮件,使用163邮箱发信.   linux中,可以使用mail命令往外发送邮件,在使用前,只需要指定如下简单配置即可,这里演示用  163.com    邮箱发送至 qq.com ...

  5. VMware 打开虚拟机出现另一个程序已锁定文件的一部分,进程无法访问

    打开虚拟机出现 另一个程序已锁定文件的一部分,进程无法访问 打不开磁盘"D:\Virtual Machines\CentOS 7 64 位\CentOS 7 64 位.vmdk"或 ...

  6. VS2015常用的字体 和 插件

    Inconsolata 字体 自己常使用 Inconsolata 作为代码字体, 阅读代码非常舒适. 其他插件 GoToDef.vsix , 查看 声明非常方便. (ctrl+鼠标左键) Viasfo ...

  7. 【LeetCode】 202. Happy Number 解题报告(Java & Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 迭代 日期 [LeetCode] 题目地址:h ...

  8. 【LeetCode】221. Maximal Square 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址: https://leet ...

  9. 【LeetCode】393. UTF-8 Validation 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/utf-8-va ...

  10. 【LeetCode】539. Minimum Time Difference 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.me/ 题目地址:https://leetcode.com/problems/minimum-t ...