go初学
一、网址参考
2、Go语言圣经(中文版)(《The Go Programming Language》)
3. Go 语言设计与实现
4. VSCode搭建Go开发环境(2020-04-13更新)
4. ubuntu18.04下安装go开发环境以及开发工具goland
6. golang使用总结:GOPATH和GOROOT区别,GOPATH 需要配置多个吗?
7. 用 Goland和 VS Code 搭建Go 语言开发环境
8. 下载地址:https://golang.google.cn/dl/
解决问题:
1. package 'xxx' is not in GOROOT(csdn, linux环境)
2. “package XXX is not in GOROOT” when building a Go project(stack overflow, windows环境)
二、实践操作
1、设置环境变量,即编译器路径
2、编写源码+Makefile文件
3、编译:go build
编译+运行: go run
4、安装go开发环境
4.1 下载go开发环境: https://golang.google.cn/dl/
4.2 将下载的二进制包解压至 /usr/local目录(linux系统)
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.14.3.linux-amd64.tar.gz
4.3 添加GOPATH(GOPATH为自己创建的存放GO项目的工作目录[不建议同GOROOT为同一个路径],可以有多个,以:分隔,但是使用go get 下载的包默认会装到第一个GOPATH下)
linux: export GOPATH=$HOME/Go
windows: 修改“环境变量”或者输入命令:go env -w GOPATH=我们自己的工作区路径
4.4 添加GOROOT
export GOROOT=/usr/local/go
4.4 设置 GOPROXY和打开GOMOD
1)linux 平台
export GOPROXY=https://goproxy.cn
由于,国内的网络有防火墙的存在,这导致有些Go语言的第三方包我们无法直接通过go get
命令获取,很多项目会编译通不过,提示错误:
go: github.com/DataDog/zstd@v1.4.0: Get "https://proxy.golang.org/github.com/%21data%21dog/zstd/@v/v1.4.0.mod": dial tcp 142.251.42.241:443: i/o timeout
export GO111MODULE=on
2) windows平台
默认值:GOPROXY=https://proxy.golang.org,direct
修改方法: go env -w GOPROXY=https://goproxy.cn,direct
打开GOMOD: go env -w GO111MODULE=on
4.5 添加PATH (linux)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
4.6 测试
1) go version
2) 创建一个test.go
的文件,写入
package main import "fmt" func main() { fmt.Println("Hello, World!") }
在test.go目录下执行
go run test.go
如果出现Hello, World!
就说明go的环境已经安装成功了
4.7 go的环境变量(windows)
1)查看 go env
2)修改: go env -w name=value, 如:
go env -w GO111MODULE=off
4.8 解决编译报错“package hello is not in GOROOT (C:\Program Files\Go\src\hello)”
1)上述错误是在运行 go build hello时,报错的
2)解决办法:go env -w GO111MODULE=off, 参考解决问题文档2
或者在目录下运行go mod init, 会生成一个.mod文件(感觉相当于新建了一个工程,包含了目录下的所有文件)然后再运行go build hello
3)如果是linux环境,可以运行:
1. export GO111MODULE=off
2. 或者在目录下运行
go mod init
然后在目录下运行:
go build hello