重拾Go语言3

本文介绍了Go语言中切片和Map的基本用法。切片是数组的引用,可以通过索引操作创建并修改,其长度和容量可以不同。Map是无序的键值对集合,通过key快速检索数据。示例展示了如何初始化、遍历、查找和删除Map元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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])
	}
}

代码结果:

师傅 是 唐僧
大师兄 是 孙悟空
二师兄 是 猪悟能
三师弟 是 沙悟净
白骨精不存在    
删除二师兄      
删除后:         
三师弟 是 沙悟净
师傅 是 唐僧    
大师兄 是 孙悟空

下周就是考试周了,这星期就学到这吧,要准备开始复习(预习)了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值