命名规范
1.变量名、常量名、函数名、类型名、语句标号、包名等,以字母(Unicode)或者下划线开头,后面跟任意数量的字母、数字或者下划线,区分大小写。
2.如果一个名字在函数内部定义,那么只在函数内部有效;如果在函数外部定义,在当前包所有的文件中都可以访问。
3.名字首字母大小写决定在包外的可见性,大写字母开头,可以被外部的包访问;包本身的名字一般都是小写字母 。
4.在包一级声明的名字可在整个包对应的每个源文件进行访问,而不仅仅是在其声明语句所在的源文件中访问。
关键字(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
保留字(37个)
append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr
变量
变量声明
用关键字var
,变量的声明必须使用空格隔开
var 变量名 变量类型
//单独声明
var name string
//一次声明多个变量
var test1, test2 string
//批量声明,一般用于声明全局变量
var (
a string //默认值是""
b int //默认值是0
c bool //默认值是false
)
变量声明必须使用;否则未使用话,go语言会报错。
指定变量类型,如果没有初始化,则会有默认值
string 默认值是""
int 默认值是0
bool 默认值是false
还有一些是nil
变量初始化
var (
a string
b int
c bool
)
a = "haha"
b = 100
c = true
//声明变量并且初始化
var x string = "Golang"
var x, y string = "Golang", "java"
//变量推导(变量根据默认值的类型设定变量类型)
var y = "Golang"
var x, z = 20, 40
注意同一个作用域内,变量不能重复声明,下面的示例是错误的:
var a = "aa"
var a = "bb"
//短变量声明(只能在函数内部使用)
m := 100
m, k := 100, true
:=
左侧如果没有声明新的变量,就产生编译错误
var intVal int
intVal :=1 // 这时候会产生编译错误
intVal,intVal1 := 1,2 // 此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句
匿名变量(_
)
//定义函数
func foo()(string, int){
return "a", 100
}
_
表示占位
a, _ := foo()
fmt.Println(a)
_, b := foo()
fmt.Println(b)
常量
常量用const
,其值在编译期间已知且不可改变,在定义时候必须赋值。常量可以是数值类型(整型、浮点型、复数类型)、布尔类型、字符串类型等。
字面常量 literal?
const pi = 3.1415
const e = 2.7182
const (
a = 100
b = 200
c
d
)
//c和d不赋值的话,默认用前一个值,即都是200
预定义常量有true
、false
、iota
。
iota
是go语言的常量计算器,只能在常量的表达式使用。
iota
在const
关键字出现时将被重置为0,const中每新增一行常量声明将使用iota
计数一次(iota可理解为const语句快中的行索引)。
应用于定义枚举。
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
使用_
跳过某些值
const (
n1 = iota //0
n2 //1
-
n4 //3
)
const (
n1 = iota //0
n2 = 100 //100
n3 = iota //2
n4 //3
)
const n5 = iota //0
const (
a, b = iota + 1, iota + 2 // iota是0,a是1,不是2
c, d // c, d = iota + 1, iota + 2 ,iota是1,a是2,不是3
e, f // e, f = iota + 1, iota + 2 ,iota是2,a是3,不是4
)
Go语言不支持其它语言支持的枚举enum
关键字,定义枚举的方式用const
,如下:
const (
Sunday = iota
Mondy
Tuesday
Wednesday
Thursday
Friday
Saturday
)