1.Slice
package main
import "fmt"
func main() {
/*
从已有的数组上,直接创建切片,该切片的底层数组就是当前的数组,
长度是从start到end切割的数据量。
但是容量从start到数组的末尾。
类似与python
*/
a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
fmt.Println("--------------1.已有数组直接创捷切片-----------------")
s1 := a[:5] //1-5
s2 := a[3:8] //4-8
s3 := a[5:] //6-10
s4 := a[:] //1-10
fmt.Println("a:", a)
fmt.Println("s1:", s1)
fmt.Println("s2:", s2)
fmt.Println("s3:", s3)
fmt.Println("s4:", s4)
fmt.Printf("%p\n", &a)
fmt.Printf("%p\n", &s1)
fmt.Printf("%p\n", &s2) //三个的地址应该一样
/*
因为切片操作是基于底层数组的,所以对切片更改还是对数组更改,两者都会发生改变
*/
}
2.Map
Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
示例:
package main
import "fmt"
func main() {
//声明变量,默认westmap为nil
var westmap map[string]string
//使用make函数
westmap = make(map[string]string)
westmap["师傅"] = "唐僧"
westmap["大师兄"] = "孙悟空"
westmap["二师兄"] = "猪悟能"
westmap["三师弟"] = "沙悟净"
for name := range westmap {
fmt.Println(name, "是", westmap[name])
}
/*查看元素是否存在于集合内*/
name, ok := westmap["白骨精"]
if ok {
fmt.Println(name, "是", westmap[name])
} else {
fmt.Println("白骨精不存在")
}
}
代码结果:
师傅 是 唐僧
大师兄 是 孙悟空
二师兄 是 猪悟能
三师弟 是 沙悟净
白骨精不存在
注:如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对
delete() 函数
delete() 函数用于删除集合的元素, 参数为 map 和其对应的 key。实例如下:
package main
import "fmt"
func main() {
//声明变量,默认westmap为nil
var westmap map[string]string
//使用make函数
westmap = make(map[string]string)
westmap["师傅"] = "唐僧"
westmap["大师兄"] = "孙悟空"
westmap["二师兄"] = "猪悟能"
westmap["三师弟"] = "沙悟净"
for name := range westmap {
fmt.Println(name, "是", westmap[name])
}
/*查看元素是否存在于集合内*/
name, ok := westmap["白骨精"]
if ok {
fmt.Println(name, "是", westmap[name])
} else {
fmt.Println("白骨精不存在")
}
fmt.Println("删除二师兄")
fmt.Println("删除后:")
delete(westmap, "二师兄")
for name := range westmap {
fmt.Println(name, "是", westmap[name])
}
}
代码结果:
师傅 是 唐僧
大师兄 是 孙悟空
二师兄 是 猪悟能
三师弟 是 沙悟净
白骨精不存在
删除二师兄
删除后:
三师弟 是 沙悟净
师傅 是 唐僧
大师兄 是 孙悟空
下周就是考试周了,这星期就学到这吧,要准备开始复习(预习)了。