1、变量和数组的声明
var关键字 :var
是 variable 的缩写,意为"变量"。它用于声明一个或多个变量。
Go
//var 变量名 类型
var a int
var a []int
//同上+赋初值
var a int=100
//自行检测
var a=100
var a=[]int{1,2,3......}
//省略var自行检测
a:=100
a:=[]int{1,2,3......}
2、const常量和枚举
使用const代替var即可定义一个只读属性的变量
Go
//显式的定义
const a int=100
//隐式的定义
const a=100
枚举:
Go
const(
a=10
b="hello"
)
iota 是一个特殊的常量生成器,用于在const
块中创建一系列的常量。iota
在每个const
声明中重置为0,并在每个后续的const
声明中自动增加1
cpp
const (
A = iota//0
B //1
C //2
)
const (
A,a = iota,iota+1//0 1
B,b //1,2
C,c //2,3
)
const (
A, a = iota * 10, (iota + 1) * 10//0 10
B, b //10 20
C, c=iota*100,(iota+1)*100 //200 300
D,d //300 400
)
3、函数
func 的全称是 "function",意为"函数"。它用于定义函数的名称、参数列表、返回值以及函数体。
Go
func functionName(parameter1 type1, parameter2 type2) returnType {
// 函数体
}
functionName
是函数的名称。parameter1
和parameter2
是函数的参数,后面跟着它们的类型type1
和type2
。returnType
是函数返回值的类型。
返回值为多个:
Go
func swap(a int, b int) (int, int) {
return b, a
}
4、defer延迟函数
defer
是一个关键字,用于确保在函数执行结束前执行一段代码。通常用于释放资源,比如关闭文件、网络连接、解锁互斥锁等。
cpp
func mprint() {
fmt.Println("defer call back")
}
func test() {
defer mprint()
}
执行流程:执行到defer时将加defer关键字的函数时压栈,函数生命周期结束时弹栈并执行函数。
5、循环
Go
for i:=0;i<10;i++{
fmt.Println(i);
}
range-based-for:
Go
a:=[]int{1,2,3,4}
for index,value:=range a{
fmt.Println(index,value)
}
6、slice切片(动态数组)和map
(1)slice
未注明大小的数组即为切片slice
定义切片:
Go
var a []int
b:=[]int{1,2,3}
对于切片的make函数:
make 函数是一个内建函数,用于创建切片(slice)、映射(map)和通道(channel)的实例。make 函数的行为根据类型不同而有所差异,但它总是返回一个类型正确的初始化值
make([]T, length, capacity)
:创建一个切片,其中T
是切片中元素的类型,length
是切片的初始长度,capacity
是切片的初始容量。如果省略capacity
参数,则默认为length
。make([]T, length)
:创建一个切片,长度和容量相等。
Go
s := make([]int, 5) // 创建一个长度为5,容量为5的切片
s := make([]int, 5, 10) // 创建一个长度为5,容量为10的切片
子串浅拷贝:
Go
a := []int{1, 2, 3, 4, 5}
b := a[1:3]
fmt.Println(b)
深拷贝:
Go
a := []int{1, 2, 3, 4, 5}
var b []int = make([]int, 5)
copy(b, a)
a[1] = 100
fmt.Println(b)
追加:
Go
b = append(b, 1)
(2)map
声明:
Go
var a map[string]string
a:=make(map[string]string)
c := map[int]string{
1: "C++",
2: "JAVA",
3: "Python",
}