初识Go语言 【一】

Linux安装-GO

#下载地址
https://studygolang.com/dl

#go1.17版本 linux
wget https://studygolang.com/dl/golang/go1.17.linux-amd64.tar.gz
#解压到指定目录
tar zxvf go1.17.linux-amd64.tar.gz -C /usr/local/

#创建数据目录
mkdir -p /data/golang/src #存放第三方依赖库
mkdir -p /data/golang/pkg
mkdir -p /data/golang/bin #第三方可执行文件
#配置环境变量
#GOROOT是go的安装目录,go原生的工具在该目录下
#GOPATH通常存放第三方依赖库
#GOPROXY:下载依赖库时走哪个镜像代理,可以公司内部自建镜像
#比如exportGOPRIVATE=git.mycom,github.com/my/private
#PATH下的二进制文件可以在任意目录下直接运行在$GOPATH目录建3个子目录: src、bin、pkg

#“direct”为特珠指示符,用于指示Go回源到模块版本的源地址去抓取(比如
#还可以设置不走 proxy 的私有仓库或组,多个用号相隔《可选)
#export GOPRIVATE=git,mycompany.com,github.com/my/private
vim ~/.bashrc
export GOROOT=/usr/local/go
export GOPATH=/data/golang
export GOPROXY=https://goproxy.cn,direct
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

source ~/.bashrc

#执行go env
[root@ca-k8s-master01 GO]# go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/data/golang/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/data/golang"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build372644532=/tmp/go-build -gno-record-gcc-switches"

#go version
[root@ca-k8s-master01 GO]# go version
go version go1.17 linux/amd64

#pkg 下载第三方包/data/golang/pkg/mod/下
[root@ca-k8s-master01 mpx@v2.9.17+incompatible]# go get github.com/didi/mpx
[root@ca-k8s-master01 mpx@v2.9.17+incompatible]# pwd
/data/golang/pkg/mod/github.com/didi/mpx@v2.9.17+incompatible
[root@ca-k8s-master01 mpx@v2.9.17+incompatible]# ls
babel.config.json   docs-vuepress     legacy      package.json  SECURITY.md
CODE_OF_CONDUCT.md  examples          lerna.json  packages      test
docs                jest.config.json  LICENSE     README.md     webpack.config.js

#Go Modules 依赖包查找机制
下载的第三方依赖存储在$GOPATH/pkg/mod下
go install生成的可执行文件存储在$GOPATH/bin下:如果第三方库中有 main.go 执行安装 会生成可执行文件
依赖包的查找顺序:
1.工作目录
2.$GOPATH/pkg/mod
3.$GOROOT/src

#在线编辑代码
https://play.studygolang.com

#Go 常用命令
go help: 查看帮助文档
    go help build
go build: 对源代码和依赖的文件进行打包,生成可执行文件
    go build -o my_first_go_exe_entrance_class/demo.go
go install: 编译并安装包或依赖,安装到$GOPATH/bin下
    go install entrance class/demo.go

go get; 把依赖库添加到当前module中,如果本机之前从未下载过则先下载
    go get github.com/tinylib/msgp 会在$GOPATH/pkg/mod目录下会生成github.com/tinylib/msgp目录
    go install github.com/tinylib/msgp@latest 会在$GOPATH/bin下生成msgp可执行文件

go mod: module相关的命令
    go mod init module_name
    go mod tidy 通过扫描当前项目中的所有代码来添加未被记录的依赖至go.mod文件或从go.mod文件中删除不再被使用的依赖

go run: 编译并运行程序

go test: 执行测试代码

go tool: 执行go自带的工具
    go tool pprof 对cpu、内存和进程进行监控
    go tool trace 跟踪协程的执行过程

go vet: 检查代码中的静态错误

go fmt: 对代码文件进行格式化,如果用了IDE这个命令就不需要了
    go fmt entrance_class/demo.go

go doc: 查看go标准库或第三方库的帮助文档
    go doc fmt
    go doc gonum.org/v1/gonum/stat

go version: 查看go版本号

go env: 查看go环境信息

 

posted @ 2024-02-01 17:27  しみずよしだ  阅读(19)  评论(0)    收藏  举报