1. golang开发工具
1.1. 开发工具简介
golang的开发工具有很多,例如:
- vim
- sublime
- atom
- LiteIDE
- eclipse
- goland
- vscode
1.2. 使用goland开发go应用
goland是一款付费的、功能强大的golang集成开发环境,是Jetbrain公司的产品。下载地址:https://www.jetbrains.com/go/
goland非常智能,几乎不需要配置,安装即用。
1.3. 使用vscode开发go应用
下载安装vscode
https://code.visualstudio.com/
下载安装插件,参考文档:
https://marketplace.visualstudio.com/items?itemName=golang.go
安装常用工具包:
1
2
3
4
5
6
7
8
9go get -u -v github.com/nsf/gocode // 代码自动补齐
go get -u -v github.com/rogpeppe/godef // 查找方法定义
go get -u -v github.com/golang/lint/golint // 代码规范
go get -u -v github.com/lukehoban/go-find-references // 查找引用
go get -u -v github.com/lukehoban/go-outline //
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename // 重命名
go get -u -v github.com/tpng/gopkgs // 可以使用的包
go get -u -v github.com/newhook/go-symbols注意执行时删除后面的注释
安装code runner运行脚本
2. 第一个go程序
2.1. helloworld
main.go
1 | // 主包,可执行文件所在包 |
cmd 中运行
1 | go run main.go |
2.2. 编译
使用go build,表示将源代码编译成可执行文件。
1.在项目目录下执行go build
2.在其他路径下执行go build
,需要在后面加上项目的路径(项目路径从GOPATH/src
后开始写起,编译之后的可执行文件就保存在当前目录下)
3.go build -o hello.exe
(指定名称)
可在终端直接执行该hello.exe
文件:
1 | c:\desktop\hello>hello.exe |
go run
像执行脚本文件一样执行go代码
go install
go install
分为两步:
1.先编译得到一个可执行文件
2.将可执行文件拷贝到GOPATH/bin
2.3. 跨平台编译
默认我们go build
的可执行文件都是当前操作系统可执行的文件,Go语言支持跨平台编译——在当前平台(例如Windows)下编译其他平台(例如Linux)的可执行文件。
Windows编译Linux可执行文件
默认我们go build
的可执行文件都是当前操作系统可执行的文件,如果想在windows下编译一个Linux下可执行的文件,那需要怎么做呢?
注意:无论你在Windows电脑上使用VsCode编辑器还是Goland编辑器,都要注意你使用的终端类型,因为不同的终端下命令不一样!!!目前的Windows通常默认使用的是
PowerShell
终端。
如果你的Windows
使用的是cmd
,那么按如下方式指定环境变量。
1 | SET CGO_ENABLED=0 // 禁用CGO |
如果你的Windows
使用的是PowerShell
终端,那么设置环境变量的语法为
1 | $ENV:CGO_ENABLED=0 |
在你的Windows
终端下执行完上述命令后,再执行下面的命令,得到的就是能够在Linux平台运行的可执行文件了。
1 | go build |
Windows编译Mac可执行文件
Windows下编译Mac平台64位可执行程序:
cmd终端下执行:
1 | SET CGO_ENABLED=0 |
PowerShell终端下执行:
1 | $ENV:CGO_ENABLED=0 |
Mac编译Linux可执行文件
Mac电脑编译得到Linux平台64位可执行程序:
1 | CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build |
Mac编译Windows可执行文件
Mac电脑编译得到Windows平台64位可执行程序:
1 | CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build |
Linux编译Mac可执行文件
Linux平台下编译Mac平台64位可执行程序:
1 | CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build |
Linux编译Windows可执行文件
Linux平台下编译Windows平台64位可执行程序:
1 | CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build |
2.test.go
1 | package main |
运行
1 | go run test.go |
3.date.go
1 | package main |
运行
1 | go run date.go |
2.4. main包的意义
在 Go 语言里,命名为 main
的包具有特殊的含义。Go 语言的编译程序会试图把这种名字的包编译为二进制可执行文件。所有用 Go 语言编译的可执行程序都必须有一个名叫 main
的包。一个可执行程序有且仅有一个 main
包。当编译器发现某个包的名字为 main
时,它一定也会发现名为 main()
的函数,否则不会创建可执行文件。main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。程序编译时,会使用声明 main 包的代码所在的目录的目录名作为二进制可执行文件的文件名。