go数组,切片,指针,map的声明

发布时间 2023-04-05 22:00:37作者: yangphp

数组定义

固定长度,只能有一种数据类型

数组必须指定长度,或使用...通过编译器自动识别长度

数组定义形式:

1

var users [3]string

users = [3]string{"liudehua", "guofucheng", "liming"}

2

var users = [3]string{"liudehua", "guofucheng", "liming"}

3

users := [3]string{"liudehua", "guofucheng", "liming"}

4、声明后再赋值

users := [3]string{}

user[0] = "liudehua"

user[1] = "guofucheng"

user[2] = "liming"

5、不确定长度,必须直接赋值,不能先声明,再赋值

users := [...]string{"liudehua", "guofucheng", "liming"}

6、声明并指定索引,索引必须为整数

users := [4]string{0: "liudehua", 1: "guofucheng", 2: "liming", 3: "zhangxueyou"}

7、声明2维数组

users := [3][2]string{

{"liudehua", "123134@qq.com"},

{"guofucheng", "231412@qq.com"},

{"zhangxueyou", "6666664465@qq.com"},

}

8、数组访问形式,通过下标访问

users[0]  users[1]  users[1][2]

 

切片:

切片(slice)依赖于数组,底层就是数组

切片是对数组的一个连续片段的引用,所以切片是一个引用类型。

切片不需要加长度

 

切片定义格式:

1

num := make([]int, 3, 5) //定义一个类型,空间,容量

2

num := make([]int, 3) //定义一个空间,容量为3

3

var num []int   //定义一个切片,并且不限容量

num = append(num, 10)

num = append(num, 20)

num = append(num, 30)

num = append(num, 40)

4

num := []int{10, 20, 30, 40, 50, 60, 70} //不用make 直接定义

5、多维切片的定义

str := [][]string{ //定义多维数组

{"lampol", "11122233"},

{"liudehua", "22211133"},

{"zhangxueyou", "222333211"},

}

 

指针:

* 指针就是指向内存地址,并获取里面的值

& 用来获取变量的内存地址

 

指针定义格式:

1

num := 5

ptr := &num

fmt.Println(*ptr) //通过 *符号,指向变量地址生成指针

2

ptr := new(string)   //通过new关键字创建指针

*ptr = "hello world"    //为指针赋值

 

map

map是一种无序的键值对集合

当键值对数量超过容量会自动扩容

map的定义,需要两个类型,一个键的类型,一个值的类型

map定义格式:

1

var users map[int]string

users = make(map[int]string, 4)  //不直接赋值,需要使用make指定map的初始容量

2

var users = make(map[int]string, 4)

3

users := make(map[int]string, 4)

users[1] = "yangphp"  //赋值

users[2] = "23"

users[3] = "1111@qq.com"

users[4] = ""

 

4、声明,并赋值

users := map[string]string{"name": "yangphp", "age": "23", "mobile": "13322226666"}

fmt.Println(users["name"]) //获取name的值

delete(users, "age") //删除age键的值

 

完结