从零学go之基础语法<一>
一、标志符
Go语言中标识符由字母数字和_
(下划线)组成,并且只能以字母和_
开头。
举几个例子:abc
,a12,_abc
, _123
。
二、关键字
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
三、37个保留字
Constants: true false iota nil Types: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error Functions: make len cap new append copy close delete complex real imag panic recover
四、可见性
1)声明在函数内部,是函数的本地值,类似private 2)声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect 3)声明在函数外部且首字母大写是所有包可见的全局值,类似public
五、声明方式
var(声明变量), const(声明常量), type(声明类型) ,func(声明函数)。
1、标准声明
var 变量名 变量类型 例如:var name string
2、批量声明
var ( a string b int c bool d float32 )
六、变量初始化
1、标准初始化
var 变量名 类型 = 表达式 var name string = "123" var age int = 18 var name, age = "123", 20
2、类型推导,编译器会根据等号右边的值来推导变量的类型完成初始化,从而初始化时可以省略类型
var name = "123" var age = 1
3、短变量声明,不能用简短声明方式来单独为一个变量重复声明,:=左侧至少有一个新变量,才允许多变量的重复声明。这里有个坑,会覆盖全局变量,且不会报错。
func main() { one := 0 one := 1 // error: no new variables on left side of := }
func main() { one := 0 one, two := 1, 2 // two 是新变量,允许 one 的重复声明。 }
4、匿名变量,在使用多重赋值时,如果想要忽略某个值,可以使用'_' 。匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。:=
不能使用在函数外。‘‘_’’多用于占位,表示忽略值。
func foo() (int, string) { return 10,"123"; } func main() { x, _ := foo() }
七、常量
1、声明跟变量一样,只是把var变成const
const pi = 3.14159 const ( pi = 3.14159 e = 2.7182 )
八、iota,常量计数器
const ( n1 = iota //0 n2 //1 n3 //2 n4 //3 )
const ( a, b = iota + 1, iota + 2 //1,2 c, d //2,3 e, f //3,4 )