本文操作系统是64位的Ubuntu16.04 LTS。
从Go官方网站下载go1.12.5.linux-amd64.tar.gz。
$ wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
解压安装包到当前目录,得到go文件夹。
$ pwd
/home/joe
$ ls
go1.12.5.linux-amd64.tar.gz
$ tar -xzf go1.12.5.linux-amd64.tar.gz
$ ls
go go1.12.5.linux-amd64.tar.gz
移动go文件夹到/usr/local路径下。
$ pwd
/home/joe
$ sudo mv go /usr/local
添加/usr/local/go/bin到系统路径。
$ export PATH=$PATH:/usr/local/go/bin
终端输入命令go version查询Go语言版本。
$ go version
go version go1.12 linux/amd64
创建"hi.go"文件。
$ touch hi.go
写入"hi.go"文件。
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
方式一:通过Go解释器,直接go run解释执行源代码。
$ go run hi.go
hello world
方式二:编译源代码成二进制可执行文件,然后执行二进制文件。
$ go build hi.go
$ ./hi
hello world
错误:无法找到"fmt"库的。
hi.go:2:8: cannot find package "fmt" in any of:
/usr/bin/src/fmt (from $GOROOT)
/home/joe/go/src/fmt (from $GOPATH)
package main
imports runtime: cannot find package "runtime" in any of:
/usr/bin/src/runtime (from $GOROOT)
/home/joe/go/src/runtime (from $GOPATH)
原因:GOROOT的路径被错误地配置到GOPATH的路径上。
解决:出于没找到GOROOT存在的合理性[3],所以一个可行的解决方案是GOROOT的路径返还给GOPATH,然后删除GOROOT。
$ export GOPATH=$GOROOT
$ unset GOROOT
或者直接配置GPATH如下。
export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
[1. Go官方网址] https://golang.org/doc/install
[2. Go Hello World参考] https://gobyexample.com/
[3. GOPATH没必要配置] https://dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-really
[备注一] 初稿,2019年05月14日。
[备注二] 完美,2019年06月11号。