编写第一个Go程序
编码格式
Go语言源码文件编码格式必须是 UTF-8
格式,否则会导致编译器出错。
结束语句
在 Go 程序中,一行代表一个语句结束。每个语句不需要像其它语言一样以分号 ";"
结尾,因为这些工作都将由 Go 编译器自动完成。
如果你打算将多个语句写在同一行,它们则必须使用 ";"
人为区分。实例如下:
package main import ( "fmt" ) func main() { fmt.Println("oldboy") fmt.Println("Linux"); fmt.Println("Java");fmt.Println("DBA") fmt.Println("Python");fmt.Println("Golang"); }
代码注释
注释不会被编译,每一个包应该有相关注释。
Go语言代码注释支持 "//"、"/**/"
两种注释方式,不能嵌套。 建议用单行注释 // 源码里也是这么用的
单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。实例如下
// 单行注释 /* 多行注释 */
编写 Hello World
1、创建文件 hello.go,不写入任何内容。运行 go build hello.go 命令进行编译。将会输出如下错误:
can't load package: package main: hello.go:1:1: expected 'package', found 'EOF'
因为Go语言中,所有文件必须隶属于某一个包。需要在文件的头部声明一个package name,其中package为关键字,name为包名。
2、在hello.go文件中添加一条语句,之后重新进行编译。
添加内容如下:
package main
执行编译,将会输出如下错误:
runtime.main_main·f: relocation target main.main not defined runtime.main_main·f: undefined: "main.main"
因为Go程序启动时,需要在文件中有一个可标识入口。Go程序的入口函数是main函数。
3、在hello.go文件中添加另外一行,并且重试。
添加内容如下:
package main
func main(){}
执行运行命令 go run hello.go
,程序正确执行并很快就退出了
到目前为止,我们已经创建了自己的第一个程序。虽然没有功能,但是已经可以正常运行了。
4、我们继续添加功能,添加内容如下:
package main func main(){ Println("hello world") }
执行编译,将会输出如下错误:
./hello.go:4:2: undefined: Println
因为Println函数存放在fmt包中。我们程序中没有主动引入fmt包,所以编译器报未定义错误。
如果我们需要使用这些包中的功能,首先需要import引入相应的包。包中的可导出组件可以通过 包名.组件名的方式进行调用。
函数Println和其它读写文本和字符的函数,都存放在一个叫做fmt的包中——formatting的缩写。
5、再添加几行代码,添加内容如下:
package main import "fmt" func main(){ fmt.Println("hello world") }
执行 go run hello.go 命令,运行程序。运行结果如下:
hello world
Go 程序启动执行顺序如下:
按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程:
如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。
然后以相反的顺序在每个包中初始化常量和变量,如果该包含有 init 函数的话,则调用该函数。
在完成这一切之后,main 也执行同样的过程,最后调用 main 函数开始执行程序。