GO 开发笔记
01 应用程序入口
- 必须是main包:package main
- 必须是main方法: func main()
- 文件名不一定是main.go
GO 语言开发注意事项
- package 名字和路径的名字不一定要一致 这一点和java是不同的
- 应用程序的入口必须是package main 不然就运行不了如图:
02 main 退出返回值
- 与其他主要编程语言的差异
- Go中的main函数不支持任何返回值
- 通过os.Exit来返回状态
示例:
- 正常退出
package main //包 表明代码所在的位置
import (
"fmt" // 引入的依赖
"os"
)
// 功能的实现
func main() {
fmt.Println("Hello world")
os.Exit(0)
}
控制台:
mahan-2:hello mh$ go run hello_world.go
Hello world
- 异常退出
- 通过下面源码可知非0代表异常退出
func Exit(code int) {
if code == 0 {
// Give race detector a chance to fail the program.
// Racy programs do not have the right to finish successfully.
runtime_beforeExit()
}
syscall.Exit(code)
}
package main //包 表明代码所在的位置
import (
"fmt" // 引入的依赖
"os"
)
// 功能的实现
func main() {
fmt.Println("Hello world")
os.Exit(-1)
}
控制台:
mahan-2:hello mh$ go run hello_world.go
Hello world
exit status 255
获取命令行参数
与其他主要编程语言的差异
- main函数不支持传入参数
- func main (arg [] string) 这样写法不是编译不通过的
- 在程序中直接通过os.Args获取命令行参数
代码示例:
package main //包 表明代码所在的位置
import (
"fmt" // 引入的依赖
"os"
)
// 功能的实现
func main() {
fmt.Println(os.Args) //打印输入的命令行参数
fmt.Println("Hello world")
os.Exit(0)
}
运行命令:
go run hello_world.go args
控制台:
[/var/folders/7g/bkyq5v3x0bn2wxqx4bryzcd00000gp/T/go-build773867233/b001/exe/hello_world args]
Hello world