Artikel untuk membantu anda memahami asas peta bahasa Go
Kata Pengantar
Hai semua, saya Zhou Ba Kali ini kita akan terus mempelajari asas peta Go.
Mengingat masa lalu
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.
Memperkenalkan peta
, 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.map基本使用
map语法
方式一,声明时赋值 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] }
方式二,make方式
代码
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(查)
遍历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) } }
修改map的值(改)
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里面的值
删除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取值注意事项
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Dua cara untuk menentukan struktur dalam bahasa Go: perbezaan antara VAR dan jenis kata kunci. Apabila menentukan struktur, pergi bahasa sering melihat dua cara menulis yang berbeza: pertama ...

Apabila menggunakan SQL.Open, mengapa DSN tidak melaporkan ralat? Dalam bahasa Go, sql.open ...
