Go 语言编译环境设置

Go语言优势


  • 天生支持高并发

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

  • 自动垃圾回收机制
  • 内存的清理
  • 不需要环境依赖
在运行go程序的时候是以二进制的方式进行运行,go build之后是生成二进制文件。像windows的exec一样,直接丢到Linux上面执行就行了,不需要安装任何环境。
  • 云原生无缝接入
  • 社区活跃度
  • 易上手

下载 Go  配置编译环境


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

Go 安装文件以及源代码         https://golang.google.cn/dl/
下载对应平台的二进制文件并安装
环境变量
GOROOT
               l go的安装目录
GOPATH
               l src:存放源代码
               l pkg:存放依赖包
               l 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
其他常用变量
               l GOOS,GOARCH,GOPROXY
               l 国内用户建议设置goproxy:export GOPROXY=https://goproxy.cn(因为防火墙的原因,好多依赖包是无法直接拉取的,设置这个那么会通过这个代理去拉)

配置 GOPROXY


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

IDE 设置(VS Code)


下载并安装 Visual Studio Code       https://code.visualstudio.com/download
安装 Go 语言插件                   https://marketplace.visualstudio.com/items?itemName=golang.go
其他可选项
Intellj goland ,收费软件
vim,sublime等

一些基本命令


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 build


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 test


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

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

Go vet  


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

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值