golang安装

1、下载go包

  1. wget https://golang.google.cn/dl/go1.16.linux-amd64.tar.gz
  2. wget https://golang.google.cn/dl/go1.19.8.linux-amd64.tar.gz 推荐用这个为主


2、解压文件到 /www/server

【重要】如果之前已经安装过go的版本,先清空下go下面src,不然可能会报一些previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:16:24的错误

  1. rm -rf /opt/go

解压go包

  1. tar -zxf go1.19.8.linux-amd64.tar.gz -C /opt/


3、配置环境变量,vim指令编辑 /etc/profile

  1. vim /etc/profile


4、在/etc/profile文件末尾添加以下配置,输入 :wq保存

  1. export GOROOT=/opt/go
    export GOBIN=$GOROOT/bin
    export GOPKG=$GOROOT/pkg/tool/linux_amd64
    export GOARCH=amd64
    export GOOS=linux
    export GOPATH=/mnt/projects/GO/chatgpt
  2. export GO111MODULE=on
    export PATH=$PATH:$GOBIN:$GOPKG

5、使换将变量配置生效,并查看golang的版本

  1. source /etc/profile
  2. go version

6、设置代理环境变量,再拉去golang.org的时候就不需要墙了。注意GO1.13及之后支持direct的写法

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

设置完后用 go env 查看,window和liunx都一样的。


7、关于报错 missing go.sum entry; to add it的处理方式,有三种处理方式:


7.1 加环境变量,本地开发推荐用这种方式,会自动拉引用和生成go.sum

  1. go env -w “GOFLAGS”=“-mod=mod”

7.2 在go build的时候添加参数,如 go build -mod=mod
7.3 在go.mod同一层级中执行 go mod tidy


8、安装完毕写一个helloworld测试
切换到gopath目录,创建一个hello.go

  1. cd /www/wwwroot/gotest.test.com
  2. vim hello.go

复制粘贴helloworld代码, :wq保存即可

  1. package main
    import “fmt”
    func main() {
    fmt.Printf(“Hello, world!\n”)
    }


9、运行

  1. go run hello.go

目录结构说明

  1. $GOPATH/
  2. ├── src/ # 源代码(你的 + 第三方的)
  3. │ ├── github.com/user/project/
  4. │ └── golang.org/x/net/
  5. ├── pkg/ # 编译后的包对象(.a 文件,加速编译)
  6. │ └── linux_amd64/
  7. └── bin/ # go install 生成的可执行文件
  8. └── dlv
  9. └── golint

当时的硬性规定
你的项目代码必须放在 $GOPATH/src/你的域名/项目名/ 下,否则 import 找不到。
go get github.com/xxx/yyy 会把代码直接下载到 $GOPATH/src/github.com/xxx/yyy,没有版本锁定,所有项目共享同一份代码——这就是著名的“依赖地狱”来源。
import “github.com/xxx/yyy” 时,编译器只会在 GOROOT/src 和 GOPATH/src 里找。