go语言--Map
//基本结构,定义
m := map[string] string {
"name" : "ccmouse",//这些是无序的,是hashmap
"course": "golang",
"site" : "imooc",
"quality": "notbad",
}
map[K]V, map[K1]map[K2]V //复合map
Map的操作
map类似php数组键为字符的形态
- 创建: make(map[string]int)
- 获取元素: m[key]
- key不存在时,获取Value类型的初始值
- 用value,ok := m[key]来判断是否存在key
- 用delete删除一个key
- map的遍历,可以使用range遍历,或者遍历key,value对
- 但是6中的方法不保证顺序,要保证顺序的话需要手动对key排序
- 使用len获取元素个数
- caseName,ok=map['key'] ok可以判断值存在不存在
Map的key的注意事项
- map使用的是哈希表,必须可以比较相等
- 除了slice,map,function的内建类型,其他的都可以作为key(string/int等等)
- struct类型不包含上述字段,也可以作为Key
寻找最长不含有重复字符的字串
//寻找最长不重复字符串
func lengthOfNonRepeatingSubStr(s string) int {
lastOccurred := make(map[byte]int)
start := 0
maxLength := 0
for i,ch := range []byte(s){
lastI,ok :=lastOccurred[ch]
if ok && lastI >= start {
start = lastI + 1
}
if i - start + 1 > maxLength {
maxLength = i- start + 1
}
lastOccurred[ch]= i
}
return maxLength
}