$ vim main.go
//创建包
package main
//导入包
import ("fmt")
//主函数
func main() {
fmt.Println("hello world")
}
编译
go build
在当前项目根目录下执行编译命令go build
,会在当前路径下生成可执行文件。
$ go build main.go
使用以GOPATH
为基础的编译路径
$ go build
编译时可通过go build -o
自定义可执行文件名称
$ go build -o entry.exe
go build
生成的可执行文件是当前操作系统可执行的文件,若希望在Windows平台下编译Linux下可执行文件,需要怎么做呢?
只需要指定目标操作系统的平台和处理器架构即可
$ go env
set CGO_ENABLED=1
set GOOS=windows
set GOHOSTARCH=amd64
环境变量 | 配置值 | 描述 |
---|---|---|
CGP_ENABLED | 0 | 禁用CGO |
GOOS | linux | 目标平台 |
GOARCH | amd64 | 目标处理器架构 |
例如:编译成Linux平台下的二进制可执行文件
$ SET CGO_ENABLED = 0
$ SET GOOS = linux
$ SET GOARCH = amd64
再次运行go build
命令可得到能够在Linux平台运行的可执行文静
go install
go install
命令会在当前目录下生成可执行的二进制文件,然后将二进制文件拷贝到GOPATH/bin
目录下。
go run
go run
命令会像执行脚本文件一样执行Go代码
交叉编译
Golang支持跨平台编译,比如在Windows平台编译一个能在Linux平台执行的文件。
创建包
Go以包作为管理工具,每个Go源代码必须声明所属包。
package main
package
是声明包名的关键字,其后跟包名。
Go的包与文件夹是一一对应的
- 一个目录下的同级文件属于同一个包
- 包名可以与目录名不同
-
main
包是Go的入口包,一个Go程序中有且仅有一个main
包。
导入包
包声明后可使用import
语句导入程序中所以来的包,导入的包名使用"
双引号包裹。
import ("fmt")
当前包中导入fmt
包,告知编译器需要使用fmt
包中的函数或变量等。
Go语言标准内提供用于格式化输入输出的内容,类似于C语言中的stdio.h
头文件。
导入的包中不能含有代码中没有使用的包,否则编译器会报出编译错误import and not used
。
使用import
关键字引入多个包时,import
使用()
小括号名包裹,每个包名独占一行。
入口函数
func main() {
fmt.Println("hello world")
}
- Go程序的入口函数为
main()
函数,是程序启动后运行的第一个函数。 -
main()
函数只能声明在main
包中,不能声明在其他包中。 - 一个
main
包中必须有且仅有一个main
函数 -
main()
函数是自定义函数的一种,Go中函数以关键字func
开头。
函数定义格式
func 函数名 (参数列表) (返回值类型列表){
函数体
}
- 函数名:由数字、字母、下划线构成,首字母非数字,同一个包禁止出现同名函数。
- 参数列表:参数由参数变量和参数类型组成
- 返回值类型列表:当函数有返回值时函数体内必须使用
return
语句返回 - 函数体:重复调用的代码片段
- Go函数左大括号
{
必须和函数名同行
fmt.Println("hello world")
- Println是fmt包的用于格式化输出数据的函数,类似C中的printf函数。
- Println函数打印完毕后自动换行,ln即Line。
- 点号
.
是Go运算符表示调用fmt包中的Println函数 - 语句结尾无需添加
;
分号做结束符
网友评论