<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # map ### **map 的基本介紹** map 是 key-value 數據結構,又稱為字段或者關聯數組。類似其它編程語言的集合, 在編程中是經常使用到 ### **map 的聲明** var map 變量名 map\[keytype\]valuetype golang 中的 map,的 key 可以是很多種類型,比如 bool, 數字,string, 指針, channel , 還可以是只 包含前面幾個類型的 接口, 結構體, 數組 ### **基本語法** var map 變量名 map\[keytype\]valuetype **key 可以是什么類型** golang 中的 map,的 key 可以是很多種類型,比如 bool, 數字,string, 指針, channel , 還可以是只 包含前面幾個類型的 接口, 結構體, 數組 通常 key 為 int 、string 注意: slice, map 還有 function 不可以,因為這幾個沒法用 \== 來判斷 **valuetype 可以是什么類型** valuetype 的類型和 key 基本一樣,這里我就不再贅述了 通常為: 數字(整數,浮點數),string,map,struct ### **map 聲明的舉例** var a map\[string\]string var a map\[string\]int var a map\[int\]string var a map\[string\]map\[string\]string **注意:聲明是不會分配內存的,初始化需要 make ,分配內存后才能賦值和使用。** ![](https://img.kancloud.cn/b6/52/b652b40b9278d3928f8095364016cfb4_733x343.png) 對上面代碼的說明 1) map 在使用前一定要 make 2) map 的 key 是不能重復,如果重復了,則以最后這個 key-value 為準 3) map 的 value 是可以相同的. 4) map 的 key-value 是無序 5) make 內置函數數目 ![](https://img.kancloud.cn/24/fe/24fe53ee813636542733d09c2311de46_759x257.png) **map 的使用** ![](https://img.kancloud.cn/2d/ab/2dab5b67b5be9a082873a7b558463cfb_589x243.png) ![](https://img.kancloud.cn/3b/0a/3b0ae724333ae8b537e21f13ad6506cc_592x166.png) ![](https://img.kancloud.cn/1e/7e/1e7e5648087535e8d45dc856ee0e5cbd_613x207.png) ![](https://img.kancloud.cn/6c/71/6c71ce7396d4649d51492f341a51f4fa_678x427.png) **map 的增刪改查操作** map 增加和更新: map\["key"\] = value //如果 key 還沒有,就是增加,如果 key 存在就是修改。 map 刪除: delete(map,"key") ,delete 是一個內置函數,如果 key 存在,就刪除該 key-value,如果 key 不存在,不操作,但是也不會報錯 ![](https://img.kancloud.cn/b2/a4/b2a46e03b173327678020f74821630af_811x165.png) ![](https://img.kancloud.cn/f7/96/f7960e34e80c514a958a10425dce65ec_581x153.png) 細節說明 如果我們要刪除 map 的所有 key ,沒有一個專門的方法一次刪除,可以遍歷一下 key, 逐個刪除 或者 map = make(...),make 一個新的,讓原來的成為垃圾,被 gc 回收 ![](https://img.kancloud.cn/5f/92/5f9283d59c8dbd11e2f5cf6e83df1572_590x133.png) **map 查找:** ![](https://img.kancloud.cn/14/5c/145c4c6282747af8651aa3bc838fdd3f_599x159.png) 對上面代碼的說明: 說明:如果 heroes 這個 map 中存在 "no1" , 那么 findRes 就會返回 true,否則返回 false **map 遍歷:** ![](https://img.kancloud.cn/e7/5d/e75da2af81817f4ab0d2e726163ab246_762x518.png) ![](https://img.kancloud.cn/30/bd/30bd66b8ea29e4271eea6a2d33aa0640_791x245.png) **map 的長度:** ![](https://img.kancloud.cn/f1/8b/f18ba84bd0b0f04788ab3854865a71fd_876x323.png) map 切片 切片的數據類型如果是 map,則我們稱為 slice of map,map 切片,這樣使用則 map 個數就可以動態變化了。 ![](https://img.kancloud.cn/22/94/229459d1dbd03a5c2b085d3e68d6f425_610x744.png) **map 排序** 1) golang 中沒有一個專門的方法針對 map 的 key 進行排序 2) golang 中的 map 默認是無序的,注意也不是按照添加的順序存放的,你每次遍歷,得到的輸出可能不一樣 3) golang 中 map 的排序,是先將 key 進行排序,然后根據 key 值遍歷輸出即可 ![](https://img.kancloud.cn/4d/2c/4d2c0889576530eb26cc8f60a09f168f_808x555.png) ![](https://img.kancloud.cn/f7/12/f712e8c0063e715acb296165b68371a5_749x184.png) **map 使用細節** 1) map 是引用類型,遵守引用類型傳遞的機制,在一個函數接收 map,修改后,會直接修改原來 的 map 【案例演示】 ![](https://img.kancloud.cn/8f/fc/8ffc9079ad0616aefc2a3c854f0a8fff_699x447.png) 2) map 的容量達到后,再想 map 增加元素,會自動擴容,并不會發生 panic,也就是說 map 能動 態的增長 鍵值對(key-value) 3) map 的 value 也經常使用 struct 類型,更適合管理復雜的數據(比前面 value 是一個 map 更好),比如 value 為 Student 結構體 【案例演示,因為還沒有學結構體,體驗一下即可】 ![](https://img.kancloud.cn/22/e0/22e0b7e3ceb3739009f2a6632a99e418_749x515.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看