Go语言学习第六课-Map的使用

在Go语言中Map的使用和其它语言相类似。对Map中的键值对进行操作,Map作为一种键值对存储容器,使用是非常广泛的。下面我们来看一看在Go语言中Map是如何定义和使用的。

Map的定义

m := map[string]string{
		//无序的
		"name":    "ccmouse",
		"course":  "golang",
		"site":    "imooc",
		"quality": "notbad",
	}
	//map[K1]map[k2]V复合map
	m2 := make(map[string]int) //m2 == empty map
	var m3 map[string]int      //m3 == nil

m,m2,m3分别是map的三种定义方式。map[key]value是Go语言map的语法规则

Map的遍历

for k, v := range m { //k,v可以省略
		fmt.Println(k, v)
	}

通过for循环的方式对Map进行遍历。当然Key,Value也是可以只取其一,相应的就用“_”代替就好了。

Map的取值操作

	fmt.Println("Geting values")
	courseanme, ok := m["course"]
	fmt.Println(courseanme, ok)

	if causeName, ok := m["cause"]; ok{
		//当map中不存在取出空串
		fmt.Println(causeName)
	}else {
		fmt.Println("key dose not exist")
	}

这里我们可以看到Go语言中,Map在取不存在元素时并不会报错。而是取value的默认值。并且取值会返回一个bool型的ok,可以用来判断map中是否含有该元素

Map的删除操作

	fmt.Println("Deleting values")
	name,ok := m["name"]
	fmt.Println(name,ok)
	fmt.Println("Deleting values")
	delete(m,"name")
	name,ok = m["name"]
	fmt.Println(name,ok)

Map也可以进行相应的删除操作。只需调用delete方法就可以了

利用Go语言Map求解最长不重复元素子串长度。

最长不重复子串长度,可以理解为,在一个字符串中,其子串中每个元素与其它元素都互不相同,如“abcdab”,那么最长不重复元素子串就是“abcd”长度为4

func lenrepeating(s string)  int{
	lastOccured := make(map[byte]int)
	start := 0
	maxlength := 0
	for i,ch := range []byte(s){
		if lastI , ok := lastOccured[ch];ok&&lastI>=start{
			start = lastOccured[ch]+1
		}
		if i-start+1>maxlength{
			maxlength = i - start+1
		}
		lastOccured[ch] = i
	}
	return maxlength
}

算法较为简单,不作赘述详细看看代码,走一编程序就懂了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值