-
Notifications
You must be signed in to change notification settings - Fork 0
learning1
Doifo edited this page Aug 4, 2023
·
3 revisions
创建变量关键词:var,常量关键词:const
创建变量的方法:
1. 单变量声明
var name string = "abc"
var name = "abc"
2. 多变量声明
var (
name string = "abc"
age int
)
3. 省略var, 使用:=, 只能用于函数内部
name := "abc"
4. 多变量声明初始化
name, age := "abc", 22
5. new一个
name := new(int)
fmt.Println(*name)
6. 匿名变量
a, _ := "100", 200
int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64
二进制:0B或0b开头
八进制:0o或0O开头
十六进制: 0x开头
float32, float64
一个字节,0-255,表示一个ACSII字符
四个字节,表示一个Unicode字符
字符串本质上是byte数组,可以用下标获取: string[index]。反引号包裹的字符串是原生型表示法,会忽略转义
声明数组
var arr [3]int
var arr = [3]int{1, 2, 3}
arr := [...]int{1, 2, 3} // 根据实际情况分配空间
arr[0:2]表示数组的一个片段, []中的第一个数表示起始下标,第二个数表示终止下标,第三个数影响切片容量。
arr[1:2:4]表示截取[1-2)下标的字符串,新字符串容量为4-1=3
构造切片
1.
var str = []string
var number = []int
2. make( []Type, size, cap )
a := make([]int, 2, 10)
添加元素
func main() {
myarr := []int{1}
// 追加一个元素
myarr = append(myarr, 2)
// 追加多个元素
myarr = append(myarr, 3, 4)
// 追加一个切片, ... 表示解包,不能省略
myarr = append(myarr, []int{7, 8}...)
// 在第一个位置插入元素
myarr = append([]int{0}, myarr...)
// 在中间插入一个切片(两个元素)
myarr = append(myarr[:5], append([]int{5,6}, myarr[5:]...)...)
fmt.Println(myarr)
}
// 第一种方法
var scores map[string]int = map[string]int{"english": 80, "chinese": 85}
// 第二种方法
scores := map[string]int{"english": 80, "chinese": 85}
// 第三种方法
scores := make(map[string]int)
scores["english"] = 80
scores["chinese"] = 85
判断key是否存在 map返回对应下标的值时,还有第二个返回值表示该key是否存在
name, exist := map["key"]
if exist {
fmt.Printf('exist')
}
遍历map
for key, value := range scores {
fmt.Println(key, value)
}
创建指针的方法
1.
num := 1
ptr := &num // 指针
2.
ptr := new(int) // 指针
*ptr = 1
3.
num := 1
var ptr *int = &num // 指针
指针声明后没有初始化,零值为nil