Go语言的结构组成
每个程序都有其自身的结构,而结构又深深地影响着程序的效率,程序的结构是功能与效率的承担着。下面通过一个简单的Hello World程序了解Go语言的基本结构
1 package main
2 import "fmt"
3 func main() {
4 / 这是一个简单的程序 /
5 fmt.Println("Hello,World!")
6 }
第1行 package main定义了包名。必须在源文件中非注释的第1行指明这个文件属于哪个包,如package main。表示一个可独立执行的程序,每个GO应用程序都需要包含一个名为main的包,并且该包包含一个叫main()的函数(该函数时Go可执行程序的执行起点,既不能带参数,也不能定义返回值)。
第2行 import "fmt",import语句用于导入该程序所依赖的包。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。实现了格式化IO(输入/输出)。
第3行 func main()时程序入口。所有Go函数以关键字func开头,每一个可执行程序都必须包含main()函数,通常是程序启动后第一个执行的函数,如果有init()函数则会先执行。
第4行 /.../是注释,程序执行时,这部分代码将被忽略。
第5行 fmt.Println("..."),将字符串输出到控制台,并将最后自动增加换行字符\n。使用fmt.Println("...\n")也会得到相同的结果。
除此之外,还有以下几点需注意。
①只有package名称为main的包可以包含main()函数。
②一个可执行程序有且仅有一个main包。
③通过import关键字来导入其他非main包。
可以通过import关键字单个导入,也可以同时导入多个。
Go语言的标识符
1.标识符
标识符就是标识某个实体的一个符号,也就是给实体起的名字,从而将其与其他实体区分开。例如,在日常生活中有许多交通工具;火车、轮船、飞机、货车等。
当然,在不同的环境下,标识符含义也不同。如嬴政,在现实生活中是历史人物秦始皇,而在游戏中《王者荣耀》中是一个法师英雄。
2.预定义标识符
预定义标识符是Go语言系统预先定义的标识符,具有见名知义的特点,如函数“输出”(printf)、“新建”(new)、“复制”(copy)等。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的意愿,使用不当还会使程序出错。下面列举几个预定义标识符。
complex | recover | append | uint8 | int | int64 | byte | copy | cap |
complex64 | float32 | string | uint16 | int8 | close | make | imag | new |
complex128 | uintptr | uint32 | int16 | panic | bool | iota | len | |
float64 | println | false | uint64 | int32 | true | uint | real | nil |
3.关键字
Go语言的关键字是系统自带的,是具有特殊含义的标识符。Go语言内置了25个关键字用于开发。
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
4.自定义标识符
用户根据需要自定义的标识符,一般用来给变量、类型、函数等程序实体起名字。
自定义标识符实际上是一个或多个字母、数字、下画线组成的序列,但第一个字符必须是字母或下画线,不能是数字。
Go语言不允许在自定义标识符中使用@、$、%符号,也不允许使用关键字作为自定义标识符。如果将预定义标识符作为自定义标识符,那么自定义标识符的含义会覆盖预定义标识符,造成程序混乱。Go是一种区分大小写的编程语言。下面列举错误的自定义标识符。
错误的自定义标识符 | 错误原因 |
---|---|
1xy | 以数字开头 |
case | Go语言的关键字 |
nil | 预定义标识符 |
需要注意的是,生活中名字可以重复,但在Go语言中,标识符绝对不能重复,要确保每个标识符都代表一个独立的个体。
Go语言的编码规范
1.注释
注释就是对代码的功能进行解释,方便开发人员理解被注释的代码。Go语言中有以下两种形式。
①单行注释:最常见的注释方式,可以在任何位置使用以//开头的单行注释
②多行注释:也叫块注释,均以/开头,以/结尾,且不可嵌套使用。一般用于文档描述或注释成块的代码片段。
2.分隔符
程序中可能会使用到的分隔符:括号()、中括号[]、大括号{}。
程序中可能会使用到的标点符号:点(.)、逗号(,)、分号(;)、冒号(:)、省略号(…)
3.Go语言的空格
Go语言中变量的声明必须使用空格隔开,如,var age int.
语句中适当使用空格能让程序更易阅读、更美观,如,a = x + y;
4.语句的结尾
在Go程序中,换行代表一个语句结束。Go语言中不需要以分号结尾,这些由编译器自动完成。若打算将多个语句写在同一行,它们须使用分号“;”人为区分;但在实际开发中不鼓励这种做法。
5.可见性规则
Go语言中,使用大小写来决定标识符(常量、变量、类型、接口、结构或函数)是否可以呗外部包所调用。
如果标识符以一个大写字母开头,那么对象就可被外部包的代码所使用(使用时程序需要先导入这个包),如面向对象语言中的public。
如果标识符以一个小写字母开头,则对包外时不可见的,但时它们在整个包的内部时可见并且可用的,如同面向对象语言的private。