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

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

如何遍歷接口切片?

如何遍歷接口切片?

Go
慕工程0101907 2021-08-23 16:54:23
仍然是 Go 的新手。我正在嘗試按照我上一個問題的建議實施答案。在這種情況下,我有一個動物界面和一堆動物結構。我希望能夠遍歷每個動物并獲得它的語言。我已經(jīng)嘗試了一個指針列表,但我不斷收到錯誤“y.language undefined(動物類型沒有字段或方法語言)”:package mainimport "fmt"type animal interface {    speak()}type dog struct{    language string}func (d *dog) speak() {    d.language = "woof"}var n = []animal{    &dog{},}func main() {    for _, w := range n{        x := &dog{}        fmt.Println(x)        x.speak()        fmt.Println(x.language)  // this works                fmt.Println(w)        y := w        y.speak()        fmt.Println(y.language)  // but this doesn't...why??    }}編輯#1:為了讓我的問題更清楚:為什么 x := &dog{} 有效但 y := w 無效?編輯 #2:不喜歡新手;(
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

錯誤是正確的。y := w聲明y為 type animal(因為您的nslice 為 type animal)。由于您的animal界面不包含language......它不知道該怎么做,因此這是一個錯誤。


您可以dog使用類型斷言斷言它實際上是一個指針:


fmt.Println(y.(*dog).language)

..但是,我不確定您要實現(xiàn)的目標。


當您引入一個cat也沒有l(wèi)anguage屬性的結構時,您的結構就會中斷。因此,這也會有類似的問題(并希望證明您的問題所在):


type cat struct{

}


func (c *cat) speak() {

    // do nothing

}

對“如何實現(xiàn)接口切片?”的問題的回答。- 您需要將您需要的任何內(nèi)容添加到界面中,以便“一般地”處理項目。這意味著將language屬性轉換為Language()方法并通過實現(xiàn)animal接口的每個單獨對象返回它。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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