本文章使用的是 go1.13,使用的系统为 mac os
最近在学习 go,吧自己在学习 go 中遇到的一些问题记录一下
安装
推荐使用 gvm 安装
gvm 是一个管理 go 版本的工具
安装步骤
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
gvm install go1.13 -B
gvm use go1.13 --default
在使用 gvm 的过程中遇到了一些问题,在 gvm 的 read.md 中建议先安装 go1.4 然后在安装别的,我安装了好几次都失败了,最后卸载了 gvm 然后使用直接使用上面的 命令就成功了(mac 系统)
环境变量介绍
GPROOT
指定 go 程序的安装位置(可以不管)GOPATH
定义工作空间
go 规定你的工作空间必须在 GOPATH 下,分为三个目录
bin
存放 build 之后的二进制文件 src
存放源码 pkg
存放模块编译之后的文件
PATH
设置 PATH 是为了能够方便的运行 go 编译之后的文件,所以讲 GO_PATH/bin 添加到 PATH
中
Hello World
创建 hello.go
并写入如下内容
package main
import "fmt"
func main(){fmt.Println("Hello World")
}
一个 go 的 hello world 的程序就完成了,执行 go run hello.go
包管理
当我使用 go 开发项目的时候发现 go 的包管理有很多种方式,不过在 go1.11 之后还是推荐大家使用 go modules
使用条件
项目的目录不在 GOPATH
目录下
使用方法
go mod init < 模块名称 > ## 创建 go.mod 模块名称使用来调用当前目录的模块的
go get < 模块名称 > ## 安装依赖包
go 命令会根据 go.mod 中定义的版本下载对应的依赖,如果你的代码中引入了包没有在 go.mod 中 go 命令会现在最新的包并且吧依赖关系放到 go.mod 中
go mod 超时的问题 设置 export GOPROXY=”https://goproxy.io” 使用这个代理将不会有超时的问题
经验
在开发 web 项目的过程中需要频繁的重启服务,之前写 node 的时候有一个 nodemon
的工具,在写 go 的时候也找了找,找到一个 gowatch 的工具还算好用,在这里推荐一下
学习视频