Go语言(一):程序结构(命名和声明)
摘之《Go语言圣经》
一、命名:
1、Go语言中的函数名、 变量名、 常量名、 类型名、 语句标号和包名等所有的命名, 都遵循一个简单的命名规则: 一个名字必须以一个字母( Unicode字母) 或下划线开头, 后面可以跟任意数量的字母、 数字或下划线。 大写字母和小写字母是不同的: mybabyt和Mybaby是两个不同的名字。
2、Go语言中类似if和switch的关键字有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
3、此外, 还有大约30多个预定义的名字, 比如int和true等, 主要对应内建的常量、 类型和函数。
内建常量: true false iota nil
内建类型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error
内建函数: make len cap new append copy close delete complex real imag panic recover
上述的预定义的名字可以重定义,然后再使用;
4、名字的开头字母的大小写决定了名字在包外的可见性。 如果一个名字是大写字母开头的( 译注: 必须是在函数外部定义的包级名字; 包级函数名本身也是包级名字) , 那么它将是导出的, 也就是说可以被外部的包访问, 例如fmt包的Printf函数就是导出的, 可以在fmt包外部访问。 包本身的名字一般总是用小写字母。
二、声明
1.Go语言主要有四种类型的声明语句: var、 const、 type和func, 分别对应变量、 常量、 类型和函数实体对象的声明。
一个Go语言编写的程序对应一个或多个以.go为文件后缀名的源文件中。 每个源文件以包的声明语句开始, 说明该源文件是属于哪个包。 包声明语句之后是import语句导入依赖的其它包,然后是包一级的类型、 变量、 常量、 函数的声明语句, 包一级的各种类型的声明语句的顺序无关紧要( 译注: 函数内部的名字则必须先声明之后才能使用)
例子:
package main
import "fmt"
const boilingF = 212.0
func main() {
var f = boilingF
var c = (f - 32) * 5 / 9
fmt.Printf("boiling point = %g°F or %g°C\n", f, c)
}
其中常量boilingF是在包一级范围声明语句声明的, 然后f和c两个变量是在main函数内部声明的声明语句声明的。 在包一级声明语句声明的名字可在整个包对应的每个源文件中访问, 而不是仅仅在其声明语句所在的源文件中访问。 相比之下, 局部声明的名字就只能在函数内部很小的范围被访问。
2、一个函数的声明由一个函数名字、 参数列表( 由函数的调用者提供参数变量的具体值) 、 一个可选的返回值列表和包含函数定的函数体组成。 如果函数没有返回值, 那么返回值列表是省略的。 执行函数从函数的第一个语句开始, 依次顺序执行直到遇到renturn返回语句, 如果没有返回语句则是执行到函数末尾, 然后返回到函数调用者。
3、最后正常的函数调用也符合C语言的函数调用思想,一个功能函数的实现,可以多次调用使用,这是语言的“继承”吧