go数组,切片,指针,map的声明
数组定义:
固定长度,只能有一种数据类型
数组必须指定长度,或使用...通过编译器自动识别长度
数组定义形式:
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键的值
完结
但行好事,莫问前程!
本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/17291057.html