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

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

為什么 [容量] 字符串?dāng)嘌缘?[] 字符串會在 Golang 中失???

為什么 [容量] 字符串?dāng)嘌缘?[] 字符串會在 Golang 中失?。?/h1>
Go
蕭十郎 2022-05-23 16:33:46
我正在使用 Golang1.14。這是測試代碼。package mainimport "time"func checkData(data interface{}) {    if _, ok := data.([]string); ok {        println("Assert true.")    } else {        println("Assert false.")    }}func main() {    var years [20]string    for i := 0; i < 20; i++ {        years[i] = string(time.Now().Year() - 10 + i)    }    checkData(years)    foods := []string{"Fruit", "Grass", "Fish", "Meat"}    checkData(foods)}輸出是:Assert false.Assert true.我是 Golang 的新手,真的很困惑,這[20]string不是一個[]string。有人能告訴我為什么嗎?謝謝。
查看完整描述

1 回答

?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗 獲得超6個贊

[20]string是一個數(shù)組。它是一個包含 20 個字符串的類型,如果將其作為 interface{} 傳遞,則可以使用intf.([20]string).

[]string是一片。它有一個支持?jǐn)?shù)組,但它本質(zhì)上是一個數(shù)組視圖。你斷言檢查接口是否是一個切片,所以這個可以工作。

數(shù)組和切片在 Go 中是不同的東西。數(shù)組是具有固定大小的數(shù)據(jù)類型。例如:

func f(arr [10]int) {...}

您只能f使用大小為 10 的 int 數(shù)組進(jìn)行調(diào)用。當(dāng)您調(diào)用它時,該數(shù)組將作為值傳遞,因此該函數(shù)將獲取該數(shù)組的副本,其中包含它的所有 10 個成員。但:

func f(arr []int) {...}

您可以f使用任何大小的切片進(jìn)行調(diào)用。切片包含對其底層數(shù)組的引用,因此此處不會發(fā)生數(shù)組副本。您不能this使用數(shù)組調(diào)用 f`。


查看完整回答
反對 回復(fù) 2022-05-23
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號