go官网
https://golang.google.cn/dl/
go中文社区
https://studygolang.com/dl
IDE
https://jetbrains.com/go/
一、安装go
安装文档 https://golang.google.cn/doc/install https://go.dev/doc/install
从 https://go.dev/dl/ 或 https://golang.google.cn/dl/ 下载对应操作系统平台指定的版本即可。
Windows安装
官网下载 go1.x.y.windows-amd64.msi ,按照安装向导安装。
然后添加goproxy环境变量 GOPROXY=https://mirrors.aliyun.com/golang/,direct
linux 安装
wget -c https://go.dev/dl/go1.20.3.linux-amd64.tar.gz
tar xf go1.20.3.linux-amd64.tar.gz -C /usr/local
添加到环境变量PATH,修改$HOME/.profile或/etc/profile
export GOROOT=/usr/local/go
export GOPATH=~/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
也可以
go env -w GO111MODULE=on
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
go env -w GOPATH=/root/go
go env -w GOPROXY=https://goproxy.cn
...
二、环境变量说明
GOROOT:go安装目录
PATH:环境变量PATH添加GOROOT下的bin目录,go可执行文件所在目录
GOPATH 第三方依赖包安装路径
例如我本机默认GOPATH=~/go
GOMODCACHE存储第三方依赖包
GO111MODULE=on
go早期版本管理依赖包方式使用GOPATH和vendor文件夹
从1.11引入Go Module,1.16版本开始GO111MODULE默认为on,会根据go.mod管理和下载依赖
GOPROXY 缺省是 https://proxy.golang.org,direct
direct 表示从镜像下载失败后,直接从原版本库地址下载, off 表示不允许从任何源下载
GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
GOPROXY=https://repo.huaweicloud.com/repository/goproxy/
一定要配置,不然后面安装包经常下载包很困难
Windows主要环境变量,如下
>go env
set GO111MODULE=
set GOARCH=amd64
set GOENV=C:\Users\otoyix\AppData\Roaming\go\env
set GOMODCACHE=C:\Users\otoyix\go\pkg\mod
set GOOS=windows
set GOPATH=C:\Users\otoyix\go
set GOPROXY=https://mirrors.aliyun.com/golang/,direct
set GOROOT=C:\Program Files\Go
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVERSION=go1.18.7
Linux主要环境变量,如下
#go env
GO111MODULE=""
GOARCH="amd64"
GOENV="/root/.config/go/env"
GOMODCACHE="/root/go/pkg/mod"
GOOS="linux"
GOPATH="/root/go"
GOPROXY="https://mirrors.aliyun.com/golang/,direct"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVERSION="go1.18.7"
三、Go命令
version
查看版本
env
查看环境变量
mod
Go Module工程化模块相关命令。模块化后就可以进行更好的工程管理、依赖管理。
go mod init otoyix.com/test 初始化模块目录,产生go.mod文件,和git init等很类似
go mod tidy 扫描当前模块,从go.mod中移除未使用依赖,添加新的依赖
get
查找依赖包,如果未下载,则下载项目依赖包,添加相关信息到go.mod中,文件存储到环境变量
GOMODCACHE 指定的目录中(默认GOPATH/pkg/mod)。
-u 下载最新包或有效更新包。默认情况下,本地有包就不下载了。如果网上有最新版,-u选项会更新本地包。
install
除了具备get的功能外,如果需要编译包,就执行go install,并把编译好的可执行文件放到GOPATH/bin下。例如
go install golang.org/x/tools/gopls@latest
build
编译Go代码,生成可执行文件。
-o 指定生成的可执行文件 go build [-o output] [build flags] [packages]
go build -o hello.exe main.go
run
编译生成可执行文件并执行。
go run main.go 指定main函数所在文件
go run otoyix.com/test 去该模块找main函数
fmt
对代码格式化。使得代码符合Go语言代码风格。
四、GO执行bash shell命令
package main
import (
"bytes"
"fmt"
"log"
"os/exec"
)
func exec_shell(s string) {
cmd := exec.Command("/bin/bash", "-c", s)
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Println(s)
fmt.Printf("%s", out.String())
}
func main() {
exec_shell("pwd")
exec_shell("ls -l")
}
执行结果
[root@localhost go]# go run shell.go
/data/go
total 4756
...... ......
...... ......
国内源加速
[root@test src]# go env -w GOPROXY=https://goproxy.io
国内加速源
https://goproxy.io
https://goproxy.cn
https://mirrors.aliyun.com/goproxy/
https://repo.huaweicloud.com/repository/goproxy/
-------------------end