1. 程式人生 > >Go語言學習第六課-Map的使用

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
}

演算法較為簡單,不作贅述詳細看看程式碼,走一程式設計序就懂了