<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    咖啡伴侶

    呆在上海
    posts - 163, comments - 156, trackbacks - 0, articles - 2

    golang slice分割和append copy還是引用

    Posted on 2013-11-20 18:46 oathleo 閱讀(6666) 評論(1)  編輯  收藏 所屬分類: Golang
    1.slice1:= slice[0:2]
    引用,非復(fù)制,所以任何對slice1或slice的修改都會影響對方
    data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
    data1 := data[0:2]
    data1[0] = 99
    fmt.Println(data1)
    fmt.Println(data)
    [99 2]
    [99 2 3 4 5 6 7 8 9 0]
    2.append
    append 比較特殊
    聲明:
    源slice= src
    添加slice = app
    結(jié)果slice=tar
    1)如果len(src) + len(app) <= cap(src)  src和tar 是指向同一數(shù)據(jù)引用 ,即修改src或tar,會影響對方
    2)否則 tar 是copy的方式 src + app ,即修改src或tar,不會影響對方
    無論哪種情況不會影響app,因?yàn)閍pp都會用copy的方式進(jìn)入tar
     
    func test2() {
    data := make([]int, 10, 20)
    data[0] = 1
    data[1] = 2
    dataappend := make([]int, 10, 20)//len <=10 則  result[0] = 99 會 影響源Slice
    dataappend[0] = 1
    dataappend[1] = 2
    result := append(data, dataappend...)
    result[0] = 99
    result[11] = 98
    fmt.Println("length:", len(data), ":", data)
    fmt.Println("length:", len(result), ":", result)
    fmt.Println("length:", len(dataappend), ":", dataappend)
    }

    Feedback

    # re: golang slice分割和append copy還是引用  回復(fù)  更多評論   

    2013-12-15 19:56 by xiaowanyee
    謝謝分享~~
    主站蜘蛛池模板: 卡一卡二卡三在线入口免费| 72pao国产成视频永久免费| 国产羞羞的视频在线观看免费| 国产成人精品123区免费视频| 亚洲激情黄色小说| 全部免费毛片在线播放| 亚洲综合伊人久久综合| yellow视频免费在线观看| 成人免费无码大片a毛片 | 免费一级毛片不卡不收费| 亚洲精品无码人妻无码| 久久WWW免费人成人片| 亚洲砖码砖专无区2023 | 亚洲成人福利在线观看| 97无码人妻福利免费公开在线视频 | 久久久久国色AV免费观看| 又粗又硬又大又爽免费视频播放| 亚洲AV无码一区二区三区鸳鸯影院| 免费AA片少妇人AA片直播| 亚洲一区电影在线观看| 在线免费观看一区二区三区| 亚洲伊人久久大香线蕉AV| 精品无码国产污污污免费| 精品免费AV一区二区三区| 亚洲国产日韩成人综合天堂| 黄色网页在线免费观看| 午夜亚洲AV日韩AV无码大全| 99re免费在线视频| ASS亚洲熟妇毛茸茸PICS| 亚洲av无码成人精品区在线播放 | 69pao强力打造免费高清| 亚洲日韩精品国产3区| 伊人婷婷综合缴情亚洲五月| 91福利免费视频| 看亚洲a级一级毛片| 久久青青成人亚洲精品| 日韩在线天堂免费观看 | 国产v亚洲v天堂无码网站| 24小时日本在线www免费的| 日韩精品无码免费专区午夜| 在线亚洲高清揄拍自拍一品区|