可以看出,在go中可以建立map的方式還是很多的,就算是不初始化,也可以賦值func main() //直接建立有值的map
var m2 map[string]int //map == nil
m3 := make(map[string]string) //map == empty map
}
在map的key可以使用那些型別?
取出不存在的元素呢?//獲取key元素
name := studens["name"]
fmt.println(name) //"張三"
key是否取到了呢?//獲取不存在元素
idcard := studens["idcard"]
fmt.println(idcard) //列印空 ""所以我們怎麼判斷,key是否取到了呢?
idcard,ok := studens["idcard"] //其實 獲取map可以返回兩個引數,第二個就是bool型別,false表示不存在
fmt.println(idcard,ok) // 列印 "" false
if idcard,ok := studens["idcard"];ok else // key idcard not exist
遍歷就很簡單了,可以使用range關鍵字//遍歷 map
fmt.println("----------key value一起遍歷------\n")
//key value一起遍歷
for k, v := range studens
fmt.println("---------只遍歷key-------\n")
//只遍歷key
for k := range studens
fmt.println("---------只遍歷 value-------\n")
//只遍歷 value
for _, v := range studens
直接使用delete函式刪除
列印出字串中最長不重複字元長度//刪除存在的鍵
delete(studens, "age")
fmt.println("delete age after:",studens) //delete age after: map[***:男 name:張三]
//刪除不存的鍵
delete(studens,"idcard")
fmt.println("delete ont exist key after:",studens) //delete ont exist key after: map[name:張三 ***:男]
舉例:
我們先來整理思路,其實這個題使用map來做就會非常的簡單,如圖:"asdjkh" -> "asdjkh" 6個字元
"aaaa" -> "a" 1個字元
"abccba" -> "abc" 3個字元
實現**:
思路是對的,也出現結果了,但是其實還是有bug的.package main
import "fmt"
/**查詢到乙個字串中
最長不重複字串
例如:asdasdss -> asd
*/func findmaxnorepeatstring(s string) int else
keysindex[v] = i
}return lenth
}func main()
發現這個 8 和 6 是什麼鬼?想到搞清楚這個問題,就需要了解,go的字串編碼,go中是使用utf編碼(可變長度編碼).fmt.println(findmaxnorepeatstring("我是小智")) //8
fmt.println(findmaxnorepeatstring("小智智小")) //6
下章專門講解 go的string編碼.
作者所有的學習原始碼在 go學習原始碼github位址,如果覺得有用的話幫小智貢獻乙個star?
Go語言學習筆記 map
學習筆記根據 無聞 go語言基礎教程 整理 package main import fmt sort func main 普通建立方式 func test1 fmt.println m map 使用make關鍵字建立 func test2 直接宣告和賦值建立 func test3 使用更簡單的方式 ...
go語言學習筆記 map
理解 map是由一組無序的鍵key值value對集合的內建型別,可以通過鍵來獲取對應的值,map和slices一樣,也是引用型別 注意 map之間不能使用 操作符來判斷 建立map 語法 map type of key type of value var mymap map string int n...
go語言學習筆記 map
go語言內建有map這種資料結構,它由無序的鍵值對組成,跟大部分語言中的map用法非常相似。它的鍵不能由可變型別 引用語義 的結構型別擔當,如切片 陣列 函式等等。map只有len,沒有cap。我們可以直接定義,或者通過make函式建立,通過make函式建立時,可以指定容量。package main...