第一个Go代码和Go常用命令
说明
Golang基础 - 第一个Go代码和Go常用命令
# 1、第一个Go代码
# 1.1 创建项目
# 进入代码目录
cd ~/GoProject
# 创建项目文件夹并进入
mkdir -p firstgo
cd girstgo
# 初始化项目
go mod init firstgo
2
3
4
5
6
7
8
9
go mod init firstgo实现了整个项目的初始化,并且会自动生成一个go.mod的文件,在文件中中声明了模块名称firstgo以及Go的版本信息。后续如果需要带入该项目中的全局变量或者函数,需要通过模块名称和目录名称来导入后使用。
# 1.2 编写代码
helloworld.go
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
2
3
4
5
6
7
8
# 1.3 运行代码
go run helloworld.go
# 运行效果如下图:
2

# 1.4 代码说明
package main:声明包,声明这个代码在main包中import "fmt":导入Go的fmt包,这个包用来实现输出功能func main() {}:这里是声明一个函数,函数名为main,没有参数和返回值,在Go中,所有函数的入口必须是main函数,并且main函数必须在main包中fmt.Println("Hello World!"):在控制台中打印Hello World!
# 2、同一个项目中函数的导入
# 2.1 创建新的目录
mkdir -p my_func
cd my_func
2
# 2.2 编写新的Go代码
add.go
package my_func
func Add(a int, b int) int {
return a + b
}
2
3
4
5
6
# 2.3 在helloworld.go代码中导入Add函数
helloworld.go
package main
import (
"fmt"
"firstgo/my_func"
)
func main() {
fmt.Println("Hello World!")
a := 6
b := 14
c := my_func.Add(a, b)
fmt.Println(c)
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 2.4 运行代码
go run helloworld.go
# 运行效果如下图:
2

# 2.5 代码说明
import "firstgo/my_func":这里是要从firstgo模块中导入my_func路径下的代码a := 6和b := 14:声明两个局部变量,a=6 b=14c := my_func.Add(a, b):这里声明了一个局部变量c用来接收myfunc.Add(a, b)的返回值,这里哦是调用了Add函数
# 3、第三方库的安装和使用
# 3.1 安装第三方库
Go语言中安装第三方库需要使用go get命令。
go get -u gonum.org/v1/gonum/stat
安装完成之后,可以在GOPATH/pkg/mod/目录下生成gonum.org/v1/gonum/stat目录。该目录中就存放着我们下载好的第三方库。
# 3.2 使用第三方库
helloworld.go
package main
import (
"firstgo/my_func"
"fmt"
"gonum.org/v1/gonum/stat" // 导入下载好的三方库
)
func main() {
fmt.Println("Hello World!")
a := 6
b := 14
c := my_func.Add(a, b)
fmt.Println(c)
arr := []float64{1, 2, 4, 5, 6, 7, 8}
// 使用stat这个三方库
v := stat.Variance(arr, nil)
fmt.Printf("方差=%f\n", v)
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
运行代码
go run helloworld.go # 运行效果如下图:1
2
此时再去查看一下
go.mod,内如如下:module firstgo go 1.17 require gonum.org/v1/gonum v0.9.3 // indirect1
2
3
4
5
6我们引用了第三方库的话,Go会自动在
go.mod文件中帮我们添加上require这一行。
# 4、Go常用命令
# 4.1 go help
通过go help可以查看go以及go配合参数的帮助文档。
例如:
go help

要查看go build的帮助文档可以使用go help build,其他的命令也可以通过go help <topic>来查看帮助文档。
# 4.2 go build
# 4.2.1 本地编译
通过go build可以将源代码以及依赖文件进行打包,生成一个可执行文件。
go build helloworld.go

默认打包之后生成的可执行文件名与源代码文件名一致,如果要指定生成可执行文件的文件名,可以通过-o参数指定:
go build -o hello helloworld.go

# 4.2.2 跨平台编译
Go 语言开发工具包的另一强大功能就是可以跨平台编译。什么是跨平台编译呢?就是你在 macOS 开发,可以编译 Linux、Window 等平台上的可执行程序,这样你开发的程序,就可以在这些平台上运行。也就是说,你可以选择喜欢的操作系统做开发,并跨平台编译成需要发布平台的可执行程序即可。
Go 语言通过两个环境变量来控制跨平台编译,它们分别是 GOOS 和 GOARCH 。
GOOS:代表要编译的目标操作系统,常见的有Linux、Windows、Darwin等GOARCH:代表要编译的目标处理器架构,常见的有386、AMD64、ARM64等
这样通过组合不同的GOOS和GOARCH,就可以编译出不同的可执行程序。比如我现在的操作系统是 macOS AMD64 的,我想编译出 Linux AMD64 的可执行程序,只需要执行 go build 命令即可,如以下代码所示:
GOOS=linux GOARCH=amd64 go build helloworld.go
更多内容可以参考Go官方文档:https://go.dev/doc/install/source#environment
# 4.3 go install
通过go install将源代码和依赖进行编译并安装,编译后生成的可执行文件会被安装到GOPATH/bin目录下。
go install helloworld.go

# 4.4 go get
通过go get可以将依赖库添加到当前的module中,如果本机之前从未下载过则先下载并安装(install)。即先现在到GOPATH/pkg/mod目录下,然后执行安装将生成的可执行文件安装到GOPATH/bin目录下。
如果当前项目的go.mod文件中没有添加依赖,在执行完go get之后会自动添加。
# 4.5 go mod
# 4.5.1 go mod init <module_name>
通过go mod init <module_name>初始化一个指定名称的模块。
# 4.5.2 go mod tidy
go mod tidy通过扫描当前项目中所有的代码来添加未被记录的依赖至go.mod文件或者从go.mod文件中删除不再被使用的依赖。
# 4.5.3 go mod download
通过go mod download命令,go会自动去扫描go.mod文件,并下载对应的三方库。
# 4.6 go run
编译并运行代码。
# 4.7 go test
执行测试代码。
# 4.8 go tool
执行go自带的工具。
- go tool pprof:对CPU、内存和协程进行监控
- go tool trace:跟踪协程的执行过程
- go tool compile -S xxx.go:将Go源代码以汇编的格式打印出来,从汇编的角度看代码,更加深入的了解Go源码
# 4.9 go vet
检查代码中的静态错误。这个工具在有了IDE自带的错误提示之后几乎用不到了。
# 4.10 go fmt
对代码文件进行格式化。但是现在很多的IDE都有代码格式化的功能了。
# 4.11 go doc
查看go标准库或者第三方库的帮助文档。
- go doc fmt
- go doc gonum.org/v1/gonum/stat
# 4.12 go version
查看当前go的版本信息。
# 4.13 go env
查看go相关的环境信息。
