一、编写hello_world程序
打开Atom编译器创建如下目录
- 建立源码目录 src
- 建立包目录 main
- 建立源码文件hello_world.go
目录如下
编写hello_world.go文件
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
执行go文件,保存文件后,终端切换到文件目录执行
$ go run hello_world.go
hello world
编译源码为二进制文件
go build hello_world.go
二、基本程序结构
package main //包,表明代码所在的模块(包)
import "fmt" //引入代码依赖
//功能实现
func main() {
fmt.Println("hello world!")
}
应用程序入口注意点
- package main //必须是main包,对应的目录名可以不是;
- func main() //必须是main方法;
- 文件名不一定是main.go
建立新目录 hello,把原先hello_world.go文件移动到hello目录中验证package指定的main包是否需要和目录名字一致?
切换到新路径执行
$ go run hello_world.go
hello world
可以看到依然可以执行,说明文件中的package声明的main名字不需要和目录的名字保持一致,但需要注意的是package声明一定要是main。
三、退出返回值
与其他主要编程语言的差异
- Go中main函数不支持任何返回值
- 通过os.Exit 来返回状态
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("hello world")
os.Exit(0)
}
终端执行效果为:
$ go run hello_world.go
hello world
返回异常值退出程序
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("hello world")
os.Exit(-1)
}
终端执行效果为:
$ go run hello_world.go
hello world
exit status 4294967295
四、获取命名行参数
与其他主要编程语言的差异
- main函数不支持传入参数
- 在程序中直接通过os.Args 获取命令行参数
打印命令行参数
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println(os.Args) //打印命令行参数
fmt.Println("hello world")
os.Exit(-1)
}
在终端执行
$ go run hello_world.go zhanmin(命令行参数)
[C:\Users\ADMINI~1\AppData\Local\Temp\go-build911438574\b001\exe\hello_world.exe zhanmin]
hello world
exit status 4294967295
判断数组长度,如果大于1将命令行参数输出到内容后面
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) > 1 {
fmt.Println("hello world",os.Args[1])
}
}
执行效果为:
$ go run hello_world.go zhanmin
hello world zhanmin
关注公众号回复“go教程”关键字获取视频教程: