编写 Hello World
创建文件 hello.go,不写入任何内容。按照如下的命令尝试进行编译
$ go run hello.go
将会打印出如下错误:
package main:
hello.go:1:1: expected 'package', found 'EOF'
在Go语言中,所有文件必须隶属于某一个包。当前,只需要理解在文件的头部声明一个package name就可以了,其中package为关键字,name为你自己起的一个包名字。
在大型的程序中,包可以很好的有条理的组织各种功能。
例如,如果你想写一个关于交通工具的虚拟模型,你应该把所有属于car的模型放入一个叫做cars的包中,把所有属于bus的模型放入buses的包中。
组织相关的功能只是包的一种用途。
现在让我们在刚刚创建的hello.go文件中添加一条语句,之后重新执行运行命令
内容:
package main
执行后,会打印如下错误:
runtime.main_main·f: relocation target main.main not defined
runtime.main_main·f: undefined: "main.main"
Go程序启动时,需要在文件中有一个可标识入口。就像汽车必须有一把启动点火的钥匙、电脑需要有一个开机键,Go程序中需要有一个main函数。
在hello.go文件中添加另外一行,并且重试
内容:
package main
func main(){}
执行命令go run hello.go
程序正确执行,但是由于我们没有做任何其它操作,程序很快就退出了。
到目前为止,我们已经创建了自己的第一个程序。虽然没啥功能,但是已经可以正常运行了。
让我们继续添加一行
内容:
package main
func main(){
Println("hello world")
}
运行,将会打印如下错误
./hello.go:4:2: undefined: Println
Println是向屏幕输入内容。执行命令之后,编译器报未定义。
为什么呢?
这里我们就需要用到包了。像Println这样的函数存放在某些包中。然而,当前这些包由于我们没有主动引入,但不能使用。如果我们需要使用这些包中的功能,首先需要import它们。
函数Println和其它读写文本和字符的函数,都存放在一个叫做fmt的包中——formatting的缩写。
我们再添加几行代码:
package main
import "fmt"
func main(){
fmt.Println("hello world")
}
运行程序go run hello.go ,输出如下:
hello world
我们只是在package下面添加了一个import语句,第一个Go程序已经正常运行了。import之后,Println可以通过 包名.的方式进行调用。
网友评论