Hai semua, saya Zhou Ba Kali ini kita akan terus mempelajari asas peta Go.
Dalam beberapa artikel di atas, kami belajar tentang jenis data , Hiris dll. untuk membantu kami menyimpan data.
Terutama hirisan, yang boleh menyimpan berbilang perkara dan boleh ditambah, dipadam, diubah suai dan disemak secara fleksibel.
Tetapi menghiris masih ada sedikit kesulitan.
Sebagai contoh, seorang pelajar mempunyai pelbagai maklumat, seperti nama, tinggi, umur dsb.
Kalau guna hirisan, mungkin kita simpan macam ni.
package main import "fmt" func main() { //学生1 var stu1 = []string{"张三", "188", "70KG", "18"} //学生2 var stu2 = []string{"李四", "170", "66KG", "17"} fmt.Println(stu1) fmt.Println(stu2) }
Mengikut pengetahuan semasa, saya hanya boleh pergi sejauh ini, dan saya hanya boleh memikirkan ini.
Tetapi akan ada kelemahan yang jelas, iaitu kita perlu menggunakan subskrip untuk mendapatkan nilai atau ubah suai nilai.
Dan kita perlu mengira di mana subskrip nilai yang ingin kita ubah suai, yang agak tidak begitu mudah.
, yang dipanggil kamus dalam Python dan peta dalam Java nampaknya mempunyai fungsi peta.
peta ialah pasangan nilai-kunci (nilai-kunci) struktur storan, iaitu tidak tertib , digunakan secara dalaman sh
pelaksanaan, prestasi Sangat tinggi.Dalam Go, peta ialah jenis rujukan
, dan peta ingatan adalah seperti berikut. 🎜🎜方式一,声明时赋值 var 变量名 = map[key类型][value类型]{ key:value, key:value,//必须使用,结尾,否则会报错 } //方式二,make方式 var 变量名 = make(map[key类型]value类型, 容量(cap)) //如果map是make方式声明的,第二个参数直接就是容量,元素个数是0,没有第三个参数
代码
package main import "fmt" func main() { var stu1 = map[string]string{ "Name": "张三", "Age": "18", "height": "188", //每行都要以,结尾, } var stu2 = map[string]string{ "Name": "李四", "Age": "20", "height": "170", //每行都要以,结尾, } fmt.Println(stu1, stu2) //map[Age:18 Name:张三 height:188] map[Age:20 Name:李四 height:170] }
代码
package main import "fmt" func main() { var stu1 = make(map[string]string,10) stu1["Name"] = "张三" stu1["Age"] = "18" stu1["height"] = "188" var stu2 = make(map[string]string,10) stu2["Name"] = "李四" stu2["Age"] = "20" stu2["height"] = "170" fmt.Println(stu1,stu2) //map[Age:18 Name:张三 height:188] map[Age:20 Name:李四 height:170] }
ps:关于这两种方式,哪个使用的多。
我的建议是,如果确定有多少个字段,就使用第一种,如果不确定多少个字段,是动态添加的,用第二种。
使用第二种要大概估算好容量,超过会触发自动扩容机制,可能会产生那么一丝丝的性能影响。
遍历map,通常只用一种方式for range
。
代码
package main import "fmt" func main() { var stu1 = make(map[string]string, 10) stu1["Name"] = "张三" stu1["Age"] = "18" stu1["height"] = "188" for key, value := range stu1 { //map遍历时,key值键,value是值 fmt.Println(key, value) } }
只遍历key
package main import "fmt" func main() { var stu1 = make(map[string]string, 10) stu1["Name"] = "张三" stu1["Age"] = "18" stu1["height"] = "188" for key := range stu1 { //只遍历key fmt.Println(key) } }
package main import "fmt" func main() { //var stu1 = make(map[string]string, 10) //stu1["Name"] = "张三" //stu1["Age"] = "18" //stu1["height"] = "188" // //stu1["Name"] = "张三666"//修改 //fmt.Println(stu1) //同上 var stu1 = map[string]string{ "Name": "张三", "Age": "18", "height": "188", //每行都要以,结尾, } stu1["Name"] = "张三666"//修改 fmt.Println(stu1) }
删除map里面的值需要用到delete
。
代码
package main import "fmt" func main() { var stu1 = map[string]string{ "Name": "张三", "Age": "18", "height": "188", //每行都要以,结尾, } fmt.Println(stu1) //map[Age:18 Name:张三 height:188] delete(stu1, "Name") //删除key以及key对应的值 fmt.Println(stu1) //map[Age:18 height:188] }
map在取值时,尽可能的判断一下是否key存在
package main import "fmt" func main() { var stu1 = map[string]string{ "Name": "张三", "Age": "18", "height": "188", //每行都要以,结尾, } //result := stu1["Name"]//key存在,没问题 //fmt.Println(result)//张三 //result := stu1["Names"]//手一抖,key打错了 //fmt.Println(result)//结果为空,显然不是太友好 //取值标准用法 result, ok := stu1["Name"] //如果key存在,ok为true,如果key不存在,ok为false fmt.Println(result,ok)//张三 true if ok { fmt.Println(result) } else { fmt.Println("key不存在") } }
上述我们学习了Go基础之map。如果在操作过程中有任何问题,记得下面讨论区留言,我们看到会第一时间解决问题。
Atas ialah kandungan terperinci Artikel untuk membantu anda memahami asas peta bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!