名称:
简单的命名规则:名称的开头是一个字母(Unicode中的字符即可)或下划线,后面可以跟任意数量的字符、数字和下划线,并区分大小写。
预留的关键字:
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
这些关键字只能用在语法允许的地方,不能作为名称。
内置预声明的常量、类型和函数
常量:
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种类型声明:变量、常量、类型和函数
go每一个源文件以package声明开头,表明文件属于哪个包。
变量声明:
var声明创建一个具体类型的变量,附加一个名称,设置初始值。
var name type = experssion
类型和表达式可以省略一个,但是不能都省略。
var s string
var i, j int
var b,str=true,"123"
包级别的初始化在main开始之前进行,局部变量初始化和声明在函数执行期间
短变量声明:
用来声明和初始化局部变量。
name := experssion
短变量的声明不需要声明所有在左边的变量。如果一些变量在同一个词法块中声明,对于那些变量,短变量的声明等同于赋值。
in, err := os.Open(infile)
out, err := os.Craete(outfile)
第二个err等同于赋值
短变量的声明不能重复