企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
编写 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可以通过 包名.的方式进行调用。