需要重新審視,因為我做的某件事在這里出錯了。我嘗試將狀態附加到切片,但不起作用我也嘗試使用取消引用type ServerStatuses []ServerStatusstatuses := new(ServerStatuses)status := &ServerStatus{ time: time, available: available, url: url,}statuses = append(statuses, *status)append在這種情況下將不起作用,盡管狀態是一個切片。
2 回答

胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
這與命名類型無關。這是因為statuses
is a *ServerStatuses
,它是指向 slice 的指針,而不是切片。您只能附加到切片,而不能附加到指針。請記住,它new
返回一個指向給定類型的指針。如果替換new(ServerStatuses)
為ServerStatuses{}
,它可以工作:https ://play.golang.org/p/OYdTbLoVifD

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