Go语言编译环境设置教程

作者:

文章目录
  • 天生支持高并发 可以自由的去控制其并发量,也就是携程,通过go routine关键字就行了。 自动垃圾回收机制 内存的清理 不需要环境依赖 在运行go程序的时候是以二进制的方式进行运行,go build之后是生成二进制文件。 像windows的exec一样,直接丢到Linux上面执行就行了,不需要安装任何环境。 云原生无缝接入 社区活跃度 易上手
  • 如果要编写和阅读代码,首先要编译安装这个语言的编译环境,  Go 安装文件以及源代码 https://golang.google.cn/dl/ 下载对应平台的二进制文件并安装 环境变量 GOROOT go 的安装路径 GOPATH src:存放源代码 pkg:存放依赖包,三方库的安装路径 bin:存放可执行文件 如果是新环境需要创建 /Users/lulei/go/src/github.com这个目录的,在这个目录里面就可以去克隆GitHub的地址。 lulei@luleideMacBook-Pro github.com % pwd /Users/lulei/go/src/github.com lulei@luleideMacBook-Pro github.com % ls astaxie cespare hashicorp mitchellh prometheus beorn7 golang lovekeepcoding pkg shiena PS C:UserslucasGolandProjectsawesomeProject> go env set GOROOT=C:/Users/lucas/sdk/go1.21.11 set GOPATH=C:Userslucasgo C:Userslucasgopkgmodcache 其他常用变量 GOOS,GOARCH,GOPROXY 国内用户建议设置goproxy:export GOPROXY=https://goproxy.cn(因为防火墙的原因,好多依赖包是无法直接拉取的,设置这个那么会通过这个代理去拉)
  • Go默认的GOPROXY的值是:GOPROXY=https://proxy.golang.org,direct。 这个goproxy在使用go get安装第三方库的时候会报错,导致无法下载成功,所以必须要修改一下。 windows使用如下命令 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct linux/macos  export GO111MODULE=on export GOPROXY=https://goproxy.io
  • 下载并安装 Visual Studio Code  https://code.visualstudio.com/download 安装 Go 语言插件  https://marketplace.visualstudio.com/items?itemName=golang.go 其他可选项 Intellj goland,收费软件 vim,sublime等
  • 项目执行方式有两种,第一种go build,生成二进制文件main.exe,直接执行即可。 PS C:UserslucasGolandProjectsawesomeProject> go build main.go     编译产生一个二进制文件 其次就是go run main.go,先将main.go去编译了,编译好之后直接执行,然后可执行文件是不保留的。  PS C:UserslucasGolandProjectsawesomeProject> go run main.gohello golang build:从源代码构建成可执行文件  get:下载一个包 install:go install从github上面下载某一个包并且安装到本地,相当于是编译安装,所以很多时候开发一个go语言项目,上传到GitHub上面,你希望别人可以使用你的项目,如果go get会将源代码下载下来,如果是go install那么会将源代码下载下来,编译完成直接安装,接下来就可以直接使用。 module awesomeProject2 go 1.16 require github.com/lovekeepcoding/testmath v0.0.0-20220225034816-3d3a22d574b6 // indirect lulei@luleideMacBook-Pro awesomeProject2 % go get github.com/lovekeepcoding/testmath go get: added github.com/lovekeepcoding/testmath v0.0.0-20220225034816-3d3a22d574b6 module 用来做依赖管理的 test 用来做单元测试的
  • Go 语言不支持动态链接,因此编译时会将所有依赖编译进同一个二进制文件。(无论拷贝到任何环境里面,因为所有依赖都会被编译到一起,所以可以顺利运行的,代价就是安装包会大一些) 指定输出目录。(go build 将go语言的源代码编译成一个二进制文件) go build –o bin/mybinary . lulei@luleideMacBook-Pro awesomeProject4 % go build lulei@luleideMacBook-Pro awesomeProject4 % ls awesomeProject4 go.mod main.go lulei@luleideMacBook-Pro awesomeProject4 % ./awesomeProject4 3 在构建的时候源代码分离 常用环境变量设置编译操作系统和 CPU 架构。 GOOS=linux GOARCH=amd64 go build 全支持列表。 $GOROOT/src/go/build/syslist.go
  • Go 语言原生自带测试 import “testing” func TestIncrease(t *testing.T) { t.Log(“Start testing”) increase(1, 2) } 写任何程序的时候,都需要去做单元测试,如何验证你写的代码是否健壮呢? 一种是手工测试,手工测试会有问题,当你的程序不断的改进修改,重复的手工测试会使得你的整个开发效率非常低,所以在整个开发过程当中都会有要求,我写的业务逻辑都是需要对应编写测试用例的,这个测试用例第一步就是单元测试。 单元测试是面向代码的,比如说你写了一个函数,你需要验证这个函数在各种情况下的行为是否正常,你们就需要写很多的测试用例,go语言原生自带单元测试的支持。 go test ./… -v 运行测试 go test命令扫描所有*_test.go为结尾的文件,惯例是将测试代码与正式代码放在同目录, 如 foo.go 的测试代码一般写在 foo_test.go 编写测试用例的时候,会将单测的代码和主代码放在一个包,这样的好处是私有函数,私有的变量都可以在单测里面被引用到。
  • 有些错误并不明显,这个错误并不会影响编译。但是它本身的逻辑会有一些小的瑕疵,在某些情况下可能会引发一些问题,针对这些情况,提供了上面这条命令。 它会检测出程序运行当中可能出现的问题,比如下面👇这些。 在多线程里面,哪个线程先执行,哪个线程后执行,这是不能确保的,如果主线程启动了一些子线程去运行,主线程立马退出了,很可能子线程还没有被正确的执行,就会被一起退出。
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。  您可能感兴趣的文章: Linux环境下编译并运行go项目的全过程 golang 64位linux环境下编译出32位程序操作
  • 目录
    • Go语言优势
    • 下载 Go  配置编译环境
    • 配置 GOPROXY
    • IDE 设置(VS Code)
    • 一些基本命令
    • Go build
    • Go test
    • Go vet
    • 总结

    • 天生支持高并发

    可以自由的去控制其并发量,也就是携程,通过go routine关键字就行了。

    • 自动垃圾回收机制
    • 内存的清理
    • 不需要环境依赖

    在运行go程序的时候是以二进制的方式进行运行,go build之后是生成二进制文件。

    像windows的exec一样,直接丢到Linux上面执行就行了,不需要安装任何环境。

    • 云原生无缝接入
    • 社区活跃度
    • 易上手

    如果要编写和阅读代码,首先要编译安装这个语言的编译环境, 

    • Go 安装文件以及源代码 https://golang.google.cn/dl/
    • 下载对应平台的二进制文件并安装
    • 环境变量

    GOROOT

    • go 的安装路径

    GOPATH

    • src:存放源代码
    • pkg:存放依赖包,三方库的安装路径
    • bin:存放可执行文件

    如果是新环境需要创建 /Users/lulei/go/src/github.com这个目录的,在这个目录里面就可以去克隆GitHub的地址。

    lulei@luleideMacBook-Pro github.com % pwd
    /Users/lulei/go/src/github.com
     
    lulei@luleideMacBook-Pro github.com % ls
    astaxie		cespare		hashicorp	mitchellh	prometheus
    beorn7		golang		lovekeepcoding	pkg		shiena
     
    PS C:UserslucasGolandProjectsawesomeProject> go env
    set GOROOT=C:/Users/lucas/sdk/go1.21.11
     
    set GOPATH=C:Userslucasgo
    C:Userslucasgopkgmodcache

    其他常用变量

    GOOS,GOARCH,GOPROXY

    国内用户建议设置goproxy:export GOPROXY=https://goproxy.cn(因为防火墙的原因,好多依赖包是无法直接拉取的,设置这个那么会通过这个代理去拉)

    Go默认的GOPROXY的值是:GOPROXY=https://proxy.golang.org,direct。

    这个goproxy在使用go get安装第三方库的时候会报错,导致无法下载成功,所以必须要修改一下。

    • windows使用如下命令
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.io,direct
    • linux/macos 
    export GO111MODULE=on
    export GOPROXY=https://goproxy.io

    下载并安装 Visual Studio Code  https://code.visualstudio.com/download

    安装 Go 语言插件  https://marketplace.visualstudio.com/items?itemName=golang.go

    其他可选项

    • Intellj goland,收费软件
    • vim,sublime等

    项目执行方式有两种,第一种go build,生成二进制文件main.exe,直接执行即可。

    PS C:UserslucasGolandProjectsawesomeProject> go build main.go    

    编译产生一个二进制文件

    其次就是go run main.go,先将main.go去编译了,编译好之后直接执行,然后可执行文件是不保留的。

     PS C:UserslucasGolandProjectsawesomeProject> go run main.gohello golang

    • build:从源代码构建成可执行文件 
    • get:下载一个包
    • install:go install从github上面下载某一个包并且安装到本地,相当于是编译安装,所以很多时候开发一个go语言项目,上传到GitHub上面,你希望别人可以使用你的项目,如果go get会将源代码下载下来,如果是go install那么会将源代码下载下来,编译完成直接安装,接下来就可以直接使用。
    module awesomeProject2
    
    go 1.16
    
    require github.com/lovekeepcoding/testmath v0.0.0-20220225034816-3d3a22d574b6 // indirect
    
    
    lulei@luleideMacBook-Pro awesomeProject2 % go get github.com/lovekeepcoding/testmath
    go get: added github.com/lovekeepcoding/testmath v0.0.0-20220225034816-3d3a22d574b6
    • module 用来做依赖管理的
    • test 用来做单元测试的

    Go 语言不支持动态链接,因此编译时会将所有依赖编译进同一个二进制文件。(无论拷贝到任何环境里面,因为所有依赖都会被编译到一起,所以可以顺利运行的,代价就是安装包会大一些)

    指定输出目录。(go build 将go语言的源代码编译成一个二进制文件)

    go build –o bin/mybinary .

    lulei@luleideMacBook-Pro awesomeProject4 % go build
    lulei@luleideMacBook-Pro awesomeProject4 % ls
    awesomeProject4 go.mod          main.go
    lulei@luleideMacBook-Pro awesomeProject4 % ./awesomeProject4 
    3

    在构建的时候源代码分离

    常用环境变量设置编译操作系统和 CPU 架构。

    GOOS=linux GOARCH=amd64 go build

    全支持列表。

    $GOROOT/src/go/build/syslist.go

    Go 语言原生自带测试

    import "testing"
    func TestIncrease(t *testing.T) {
    t.Log("Start testing")
    increase(1, 2)
    }

    写任何程序的时候,都需要去做单元测试,如何验证你写的代码是否健壮呢?

    一种是手工测试,手工测试会有问题,当你的程序不断的改进修改,重复的手工测试会使得你的整个开发效率非常低,所以在整个开发过程当中都会有要求,我写的业务逻辑都是需要对应编写测试用例的,这个测试用例第一步就是单元测试。

    单元测试是面向代码的,比如说你写了一个函数,你需要验证这个函数在各种情况下的行为是否正常,你们就需要写很多的测试用例,go语言原生自带单元测试的支持。

    • go test ./… -v 运行测试
    • go test命令扫描所有*_test.go为结尾的文件,惯例是将测试代码与正式代码放在同目录, 如 foo.go 的测试代码一般写在 foo_test.go

    编写测试用例的时候,会将单测的代码和主代码放在一个包,这样的好处是私有函数,私有的变量都可以在单测里面被引用到。

    有些错误并不明显,这个错误并不会影响编译。但是它本身的逻辑会有一些小的瑕疵,在某些情况下可能会引发一些问题,针对这些情况,提供了上面这条命令。

    它会检测出程序运行当中可能出现的问题,比如下面👇这些。

    在多线程里面,哪个线程先执行,哪个线程后执行,这是不能确保的,如果主线程启动了一些子线程去运行,主线程立马退出了,很可能子线程还没有被正确的执行,就会被一起退出。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 

    您可能感兴趣的文章:

    • Linux环境下编译并运行go项目的全过程
    • golang 64位linux环境下编译出32位程序操作

    站内搜索