第一个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 // indirect
1
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相关的环境信息。