1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-23 20:02:22 +00:00
This commit is contained in:
lewgun 2018-01-02 10:44:49 +08:00 committed by GitHub
parent b82ac3b9b4
commit 2a2204a364
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -50,7 +50,7 @@ func main() {
将以上代码保存到`hello.go`文件中。因为代码中有非ASCII的中文字符我们需要将文件的编码显式指定为无BOM的UTF8编码格式源文件采用UTF8编码是Go语言规范所要求的。然后进入命令行并切换到`hello.go`文件所在的目录。目前我们可以将Go语言当作脚本语言在命令行中直接输入`go run hello.go`来运行程序。如果一切正常的话。应该可以在命令行看到输出"你好, 世界!"的结果。
现在让我们简单介绍一下程序。所有的Go程序都是由最基本的函数和变量构成函数和变量被组织到一个个单独的Go源文件中这些源文件再按照作者的意图组织成合适的package最终这些package有机地组成一个完成的Go语言程序。其中一个函数用于包含一系列的语句,指明要执行的操作序列,以及执行操作存放数据的变量。我们这个程序中函数的名字是main。虽然Go语言中函数的名字没有太多的限制但是main包中的main函数默认是每一个可执行程序的入口。而package则用于包装和组织相关的函数、变量和常量。在使用一个package之前我们需要使用import语句导入包。例如我们这个程序中导入了fmt包fmt是format单词的缩写表示格式化相关的包然后我们才可以使用fmt包中的Println函数。
现在让我们简单介绍一下程序。所有的Go程序都是由最基本的函数和变量构成函数和变量被组织到一个个单独的Go源文件中这些源文件再按照作者的意图组织成合适的package最终这些package有机地组成一个完成的Go语言程序。其中函数用于包含一系列的语句指明要执行的操作序列以及执行操作存放数据的变量。我们这个程序中函数的名字是main。虽然Go语言中函数的名字没有太多的限制但是main包中的main函数默认是每一个可执行程序的入口。而package则用于包装和组织相关的函数、变量和常量。在使用一个package之前我们需要使用import语句导入包。例如我们这个程序中导入了fmt包fmt是format单词的缩写表示格式化相关的包然后我们才可以使用fmt包中的Println函数。
而双引号包含的“你好, 世界!”则是Go语言的字符串面值常量。和C语言中的字符串不同Go语言中的字符串内容是不可变更的。在以字符串作为参数传递给fmt.Println函数时字符串的内容并没有被复制——传递的仅仅是字符串的地址和长度字符串的结构在`reflect.StringHeader`中定义。在Go语言中函数参数的传递都是复制的方式,函数参数并不支持引用的方式传递比较特殊的是Go语言闭包函数对外部变量是以引用的方式使用
而双引号包含的“你好, 世界!”则是Go语言的字符串面值常量。和C语言中的字符串不同Go语言中的字符串内容是不可变更的。在以字符串作为参数传递给fmt.Println函数时字符串的内容并没有被复制——传递的仅仅是字符串的地址和长度字符串的结构在`reflect.StringHeader`中定义。在Go语言中函数参数都是以复制的方式(不支持以引用的方式)传递比较特殊的是Go语言闭包函数对外部变量是以引用的方式使用