go命令依赖一个重要的环境变量:$GOPATH
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号;
当有多个GOPATH时默认将go get获取的包存放在第一个目录下
gopath有三个子目录,bin存放编译好的二进制文件,pkg编译时生成的中间文件,src存放源代码
$GOROOT使go的安装路径
apt-get install golang #安装go语言
go env #查看go语言配置环境
go version #查看版本
vim /etc/profile
export GOROOT=/usr/local/go #设置为go安装的路径,有些安装包会自动设置默认的goroot
export GOPATH=$HOME/gocode #默认安装包的路径,可更改
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 编辑path
source /etc/profile #使配置生效
注:将source /etc/profile写在.bashrc(.zshrc)里可以避免每次开机都要输入该命令
go env //打印go所有默认环境变量
go env gopath //打印某个环境变量的值
go111module //使用go module进行包管理,可以设为on或auto
goroot //go安装目录
gopath //go工作区目录,内有三个文件夹(src/pkg/bin)分别存放源码/包文件和二进制文件
goos及goarch //goos的默认值是我们当前的操作系统, 如果windows,linux,darwin。 goarch则表示cpu架构,如386,amd64,arm等。更改这两个变量可以即可方便的进行交叉编译
goarm //针对arm架构处理器,可以为5或6
gomaxprocs //用于设置应用程序可使用的处理器个数与核数
$goos $goarch
android arm
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
linux arm64
linux ppc64
linux ppc64le
linux mips
linux mipsle
linux mips64
linux mips64le
linux s390x
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
openbsd arm
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
使用类似go get github.com/subfinder/subfinder可以直接卸载编译好程序,编译好的文件在bin中。
使用go get -u可以更新程序
由于众所周知的原因,golang在下载golang.org的包时会出现访问不了的情况。尤其是x包,很多库都依赖于它。由于x包在github上都有镜像,我们可以使用从github.com上先clone下来,再做软链接的方式曲线救国。
mkdir -p $GOPATH/src/github.com/golang/
git clone https://github.com/golang/sys.git $GOPATH/src/github.com/golang/sys
git clone https://github.com/golang/net.git $GOPATH/src/github.com/golang/net
git clone https://github.com/golang/text.git $GOPATH/src/github.com/golang/text
git clone https://github.com/golang/lint.git $GOPATH/src/github.com/golang/lint
git clone https://github.com/golang/tools.git $GOPATH/src/github.com/golang/tools
git clone https://github.com/golang/crypto.git $GOPATH/src/github.com/golang/crypto
ln -s $GOPATH/src/github.com/golang/ $GOPATH/src/golang.org/x
对git设置代理直接下载的方法可参考https://studygolang.com/articles/05690
go mod是go的包管理工具,类似python的pip
go env -w GO111MODULE=auto //或on
go env -w GOPROXY=https://goproxy.cn,direct // 使用七牛云的
可以随便找一个目录创建项目
mkdir Gone
cd Gone
go mod init Gone
文件夹下会新建一个go.mod文件
创建一个main.go文件
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
执行 go run main.go 运行代码会发现 go mod 会自动查找依赖自动下载
再查看 go.mod发现多了一行
require github.com/gin-gonic/gin v1.6.3
go 会自动生成一个 go.sum 文件来记录 dependency tree。一般不用管go.sum文件
go mod tidy可以引用项目需要的依赖增加到go.mod文件。
去掉go.mod文件中项目不需要的依赖。
清理缓存
运行 go get -u 将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
运行 go get -u=patch 将会升级到最新的修订版本
运行 go get package@version 将会升级到指定的版本号version
运行go get如果有版本的更改,那么go.mod文件也会更改
选择运行->打开配置,配置launch.json
打开配置文件之后,我们可以看到它有个 args 选项,里面就可以填写我们要给它的参数,
(如果没有 args 选项,也可以自己手动添加一个)
例如这里我给它的参数是 make,那我就在里面写 “make”,
(它是一个 list,可以有多个参数,注意要用上引号,防止由于参数中包含空格引起的问题):
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"args":["check","127.0.0.1"],
"program": "${fileDirname}"
}
]
}
编译,去掉调试信息和符号信息,可减小文件大小
go build -ldflags "-s -w" -o target.exe .\target.go
go命令依赖一个重要的环境变量:$GOPATH
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号;
当有多个GOPATH时默认将go get获取的包存放在第一个目录下
gopath有三个子目录,bin存放编译好的二进制文件,pkg编译时生成的中间文件,src存放源代码
$GOROOT使go的安装路径
apt-get install golang #安装go语言
go env #查看go语言配置环境
go version #查看版本
vim /etc/profile
export GOROOT=/usr/local/go #设置为go安装的路径,有些安装包会自动设置默认的goroot
export GOPATH=$HOME/gocode #默认安装包的路径,可更改
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 编辑path
source /etc/profile #使配置生效
注:将source /etc/profile写在.bashrc(.zshrc)里可以避免每次开机都要输入该命令
go env //打印go所有默认环境变量
go env gopath //打印某个环境变量的值
go111module //使用go module进行包管理,可以设为on或auto
goroot //go安装目录
gopath //go工作区目录,内有三个文件夹(src/pkg/bin)分别存放源码/包文件和二进制文件
goos及goarch //goos的默认值是我们当前的操作系统, 如果windows,linux,darwin。 goarch则表示cpu架构,如386,amd64,arm等。更改这两个变量可以即可方便的进行交叉编译
goarm //针对arm架构处理器,可以为5或6
gomaxprocs //用于设置应用程序可使用的处理器个数与核数
$goos $goarch
android arm
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
linux arm64
linux ppc64
linux ppc64le
linux mips
linux mipsle
linux mips64
linux mips64le
linux s390x
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
openbsd arm
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
使用类似go get github.com/subfinder/subfinder可以直接卸载编译好程序,编译好的文件在bin中。
使用go get -u可以更新程序
由于众所周知的原因,golang在下载golang.org的包时会出现访问不了的情况。尤其是x包,很多库都依赖于它。由于x包在github上都有镜像,我们可以使用从github.com上先clone下来,再做软链接的方式曲线救国。
mkdir -p $GOPATH/src/github.com/golang/
git clone https://github.com/golang/sys.git $GOPATH/src/github.com/golang/sys
git clone https://github.com/golang/net.git $GOPATH/src/github.com/golang/net
git clone https://github.com/golang/text.git $GOPATH/src/github.com/golang/text
git clone https://github.com/golang/lint.git $GOPATH/src/github.com/golang/lint
git clone https://github.com/golang/tools.git $GOPATH/src/github.com/golang/tools
git clone https://github.com/golang/crypto.git $GOPATH/src/github.com/golang/crypto
ln -s $GOPATH/src/github.com/golang/ $GOPATH/src/golang.org/x
对git设置代理直接下载的方法可参考https://studygolang.com/articles/05690
go mod是go的包管理工具,类似python的pip
go env -w GO111MODULE=auto //或on
go env -w GOPROXY=https://goproxy.cn,direct // 使用七牛云的
可以随便找一个目录创建项目
mkdir Gone
cd Gone
go mod init Gone
文件夹下会新建一个go.mod文件
创建一个main.go文件
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
执行 go run main.go 运行代码会发现 go mod 会自动查找依赖自动下载
再查看 go.mod发现多了一行
require github.com/gin-gonic/gin v1.6.3
go 会自动生成一个 go.sum 文件来记录 dependency tree。一般不用管go.sum文件
go mod tidy可以引用项目需要的依赖增加到go.mod文件。
去掉go.mod文件中项目不需要的依赖。
清理缓存
运行 go get -u 将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
运行 go get -u=patch 将会升级到最新的修订版本
运行 go get package@version 将会升级到指定的版本号version
运行go get如果有版本的更改,那么go.mod文件也会更改
选择运行->打开配置,配置launch.json
打开配置文件之后,我们可以看到它有个 args 选项,里面就可以填写我们要给它的参数,
(如果没有 args 选项,也可以自己手动添加一个)
例如这里我给它的参数是 make,那我就在里面写 “make”,
(它是一个 list,可以有多个参数,注意要用上引号,防止由于参数中包含空格引起的问题):
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"args":["check","127.0.0.1"],
"program": "${fileDirname}"
}
]
}
编译,去掉调试信息和符号信息,可减小文件大小
go build -ldflags "-s -w" -o target.exe .\target.go