Go語言學習第六課-Map的使用
阿新 • • 發佈:2018-12-10
在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
}
演算法較為簡單,不作贅述詳細看看程式碼,走一程式設計序就懂了