亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

將數組指針傳遞給需要類型接口的函數

將數組指針傳遞給需要類型接口的函數

Go
尚方寶劍之說 2023-08-14 17:33:46
Golang 書中的一個示例顯示了一個指向數組的指針通過引用傳遞到函數中:package mainimport "fmt"func reclassify(planets *[]string) {    *planets = (*planets)[0:8]}func main() {    planets := []string{        "mercury", "venus", "earth", "mars", "jupiter",        "saturn", "uranus", "neptune", "pluto",    }    reclassify(&planets)    fmt.Println(planets)}我嘗試用接口替換 reclassify() 的 *[]string 參數:func reclassify(planets interface{}) {    *planets = planets.(*[]string)[0:8]}但是我收到這些錯誤:./test.go:10:2: invalid indirect of planets (type interface {})./test.go:10:32: cannot slice planets.(*[]string) (type *[]string)我之前使用過該接口將不同的數據類型傳遞給給定的函數。是否可以以類似的方式對此示例進行操作?我可以看到我的版本的 *planets 變量沒有意義,但我不確定將其更改為什么(如果有的話)
查看完整描述

1 回答

?
慕田峪7331174

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

我建議使用類型斷言來確定類型并更新它。interface在Golang中只是一個接口。


func reclassify(planets interface{}) {

    switch v := planets.(type) {

        case *[]string:

            fmt.Println("Slice string:",*v)

            *v = (*v)[0:8]

        default:

            fmt.Println("Uknown")

    }

}


查看完整回答
反對 回復 2023-08-14
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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