校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > go語言中的二維切片賦值

go語言中的二維切片賦值

熱門標簽:涿州代理外呼系統 阿克蘇地圖標注 外呼系統用什么卡 電話機器人軟件免費 外呼系統顯本地手機號 excel地圖標注分布數據 評價高的400電話辦理 百度地圖標注后傳給手機 壽光微信地圖標注

先用append填充一維的,然后將一維append到二維

代碼如下

var a [][]int
for i := 0; i  10; i++ {
     var tmp []int
     for j:= 0; j  10; j++ {
          tmp = append(tmp, j)
     }
     a = append(a, tmp)
}

補充:Go切片的一些技巧

空切片也是切片

與map不同,尚未分配的切片也是可以用的:

一個nil切片的長度和容量都是0;你可以append到一個空切片,Go會自動分配;你也可以直接迭代一個空切片

var s []int64 // nil, len 0, cap 0
for i := range s {
  fmt.Println("this will not be printed")
}
s = append(s, 1) // len 1

結果就是,如果一個map的值是slice類型,那么沒必要為一個新的key創建一個slice。

m := map[string][]int64{}
for {
  // do something
  if _, found := m[key]; !found {
    m[key] = []int64{value}
  } else {
    m[key] = append(m[key], value)
  }
}

上面的代碼可以替換為

m := map[string][]int64{}
for {
  // do something
  m[key] = append(m[key], value)
}

對一個切片進行重新切片,會分享同一個底層數組

一個切片就是一個指向數組的指針。重新切片(如 s2 := s1[a:b] )就是對相同的底層數組創建了一個新的指針,新的指針具有不同的起始偏移量和切片長度。

結果就是,append操作會修改所有切片。

s1 := []int64{1, 2, 3}
s2 := s1[:1]
s2 = append(s2,0)
fmt.Println(s1) // []int64{1, 0, 3}

……除非需要分配一個新數組:

s1 := []int64{1, 2, 3}
s2 := s1[:1]
s2 = append(s2,0,0,0) // 重新分配了一個新的底層數組
fmt.Println(s1) // []int64{1, 2, 3}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • go語言求任意類型切片的長度操作
  • 如何在Go中使用切片容量和長度
  • Go語言切片前或中間插入項與內置copy()函數詳解
  • golang中切片copy復制和等號復制的區別介紹
  • go語言中切片與內存復制 memcpy 的實現操作
  • go語言中切片的長度和容量的區別

標簽:梅河口 吐魯番 欽州 汕頭 銅川 重慶 蘭州 雞西

巨人網絡通訊聲明:本文標題《go語言中的二維切片賦值》,本文關鍵詞  語言,中的,二維,切片,賦值,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go語言中的二維切片賦值》相關的同類信息!
  • 本頁收集關于go語言中的二維切片賦值的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 综艺| 文山县| 醴陵市| 成武县| 丘北县| 金秀| 丰原市| 拉孜县| 元氏县| 开远市| 德令哈市| 石狮市| 天水市| 闵行区| 肥东县| 和硕县| 龙南县| 崇左市| 舞钢市| 镇雄县| 绥滨县| 苍梧县| 开原市| 星座| 甘孜县| 南木林县| 南阳市| 唐山市| 和田市| 寿阳县| 新疆| 潞西市| 越西县| 清流县| 景泰县| 利津县| 房山区| 鄂托克前旗| 蓬莱市| 句容市| 修武县|