2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
這與命名類型無(wú)關(guān)。這是因?yàn)?code>statusesis a *ServerStatuses
,它是指向 slice 的指針,而不是切片。您只能附加到切片,而不能附加到指針。請(qǐng)記住,它new
返回一個(gè)指向給定類型的指針。如果替換new(ServerStatuses)
為ServerStatuses{}
,它可以工作:https ://play.golang.org/p/OYdTbLoVifD

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
在Go中,new
內(nèi)置函數(shù)返回指定類型的指針。因此,new(ServerStatuses)
給你一個(gè)ServerStatuses
類型為 ( *ServerStatuses
) 的指針。
而且您還使用了附加語(yǔ)句。但append()
僅附加到slice
. status
您正在嘗試將type 的 var的指向值附加SeverStatus
到statuses
type 的var *ServerStatuses
。這就是為什么事情沒(méi)有按照你的預(yù)期進(jìn)行。如果我們模擬您針對(duì) var 的相應(yīng)類型使用的語(yǔ)句:
statuses = append( statuses, *status ) *ServerStatuses <-- append( *ServerStatuses, ServerStatus )
因此,您必須將statuses
var 聲明為slice
類型。例如,
statuses := make(ServerStatuses, 0)
請(qǐng)參閱示例https://play.golang.org/p/RXETzrxSVqm
- 2 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)