首頁 > 後端開發 > Golang > golang map怎麼修改

golang map怎麼修改

青灯夜游
發布: 2022-12-26 17:51:59
原創
5517 人瀏覽過

修改方法:1、使用「map[「key」]= value」語句增加或更新元素,如果「key」是存在的則更新元素,如果「key」是不存在的則增加元素;2、使用delete()函數從map中刪除指定鍵值對,語法「delete(map, 鍵名)」;3、重新建立新的map對象,可以清空map中的所有元素,語法「var mapname map[keytype]valuetype」。

golang map怎麼修改

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

Go語言中map 是一種特殊的資料結構,一種元素對(pair)的無序集合,pair 對應一個key(索引)和一個value(值),所以這個結構也稱為關聯數組或字典,這是一個能夠快速尋找值的理想結構,給定key,就可以迅速找到對應的value。

map 這種資料結構在其他程式語言中也稱為字典(Python)、hash 和 HashTable 等。

map的引入

【1】映射(map), Go語言中內建的一種類型,它將鍵值對相關聯,我們可以透過鍵key來取得對應的值value。類似其它語言的集合
golang map怎麼修改

【2】基本語法

var map变量名 map[keytype]valuetype
登入後複製

PS:key、value的類型:bool、數字、string、指標、channel 、還可以是只包含前面幾個類型的介面、結構體、陣列
PS:key通常為int 、string類型,value通常為數字(整數、浮點數)、string、map、結構體
PS:key: slice、map、function不可以

【3】程式碼:

map的特性:

(1)map集合在使用前一定要make
(2 )map的key-value是無序的
(3)key是不可以重複的,如果遇到重複,後一個value會取代前一個value
(4)value可以重複的

package main
import "fmt"
func main(){
        //定义map变量:
        var a map[int]string
        //只声明map内存是没有分配空间
        //必须通过make函数进行初始化,才会分配空间:
        a = make(map[int]string,10) //map可以存放10个键值对
        //将键值对存入map中:
        a[20095452] = "张三"
        a[20095387] = "李四"
        a[20097291] = "王五"
        a[20095387] = "朱六"
        a[20096699] = "张三"
        //输出集合
        fmt.Println(a)
}
登入後複製

map的三種建立方式

 package main
import "fmt"
func main(){
        //方式1:
        //定义map变量:
        var a map[int]string
        //只声明map内存是没有分配空间
        //必须通过make函数进行初始化,才会分配空间:
        a = make(map[int]string,10) //map可以存放10个键值对
        //将键值对存入map中:
        a[20095452] = "张三"
        a[20095387] = "李四"
        //输出集合
        fmt.Println(a)
        //方式2:
        b := make(map[int]string)
        b[20095452] = "张三"
        b[20095387] = "李四"
        fmt.Println(b)
        //方式3:
        c := map[int]string{
                20095452 : "张三",
                20098765 : "李四",
        }
        c[20095387] = "王五"
        fmt.Println(c)
}
登入後複製

#map的增刪改查

【1】增加和更新操作:

map[“key”]= value ——” 如果key還沒有,就是增加,如果key存在就是修改。

【2】刪除動作:

delete(map,「key」) , delete是內建函數,如果key存在,就刪除該key-value,如果k的y不存在,不操作,但是也不會報錯

golang map怎麼修改

【3】清空操作:

(1)如果我們要刪除map的所有key ,沒有一個專門的方法一次刪除,可以遍歷一下key,逐個刪除

(2)或者map = make(…),make一個新的,讓原來的成為垃圾,被gc回收

【4】查找操作:

value ,bool = map[key]

value為返回的value,bool為是否返回,要么true 要麼false

package main
import "fmt"
func main(){
        //定义map
        b := make(map[int]string)
        //增加:
        b[20095452] = "张三"
        b[20095387] = "李四"
        //修改:
        b[20095452] = "王五"
        //删除:
        delete(b,20095387)
        delete(b,20089546)
        fmt.Println(b)
        //查找:
        value,flag := b[200]
        fmt.Println(value)
        fmt.Println(flag)
}
登入後複製

【5】取得長度:len函數

【6】遍歷:for-range

package main
import "fmt"
func main(){
        //定义map
        b := make(map[int]string)
        //增加:
        b[20095452] = "张三"
        b[20095387] = "李四"
        b[20098833] = "王五"
        //获取长度:
        fmt.Println(len(b))
        //遍历:
        for k,v := range b {
                fmt.Printf("key为:%v value为%v \t",k,v)
        }
        fmt.Println("---------------------------")
        //加深难度:
        a := make(map[string]map[int]string)
        //赋值:
        a["班级1"] = make(map[int]string,3)
        a["班级1"][20096677] = "露露"
        a["班级1"][20098833] = "丽丽"
        a["班级1"][20097722] = "菲菲"
        a["班级2"] = make(map[int]string,3)
        a["班级2"][20089911] = "小明"
        a["班级2"][20085533] = "小龙"
        a["班级2"][20087244] = "小飞"
        for k1,v1:= range a {
                fmt.Println(k1)
                for k2,v2:= range v1{
                        fmt.Printf("学生学号为:%v 学生姓名为%v \t",k2,v2)
                }
                fmt.Println()
        }
}
登入後複製

【相關推薦:Go影片教學程式設計教學

#

以上是golang map怎麼修改的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板