第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這個go切片的長度是4,為什么輸出在切片中有空間?

為什么這個go切片的長度是4,為什么輸出在切片中有空間?

Go
眼眸繁星 2022-09-05 09:14:42
我是golang的新手,在運行此代碼片段時,我將len設置為4,試圖理解為什么會這樣?package mainimport "fmt"type phone struct {    model  string    camera Camera    ram    int}type Camera struct {    lens      string    aparature int}func main() {    var m = make(map[string]phone)    myphn1 := phone{model: "iphone", camera: Camera{"20", 4}, ram: 6}    myphn2 := phone{model: "pixel", camera: Camera{"50", 2}, ram: 6}    m["myphn1"] = myphn1    m["myphn2"] = myphn2    var k = make([]string, len(m))    for key, _ := range m {        k = append(k, key)    }    fmt.Println(k)    fmt.Println(len(k))}我知道這在創(chuàng)建時增加了2的大小,但是在打印時它給出了類似的東西,是2個未分配條目的答案空間嗎?[  myphn2 myphn1]4
查看完整描述

2 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

這將創(chuàng)建一個長度為 2 的切片(此處為 2):len(m)


var k = make([]string, len(m))

這增加了兩個元素,總共4個:


for key, _ := range m {

    k = append(k, key)

}

如果要預先分配切片,則需要提供長度為零以及所需的容量:


var k = make([]string, 0, len(m))

這在 Tour of Go 中提供了一些示例。


查看完整回答
反對 回復 2022-09-05
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

創(chuàng)建長度為 2 的切片,并向其追加了兩個元素,因此長度為 4。

您可能要做的是創(chuàng)建容量為 2 的切片:

var k = make([]string,0,len(m))


查看完整回答
反對 回復 2022-09-05
  • 2 回答
  • 0 關注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號