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

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

附加不適用于定義為結構類型切片的命名類型

附加不適用于定義為結構類型切片的命名類型

Go
牛魔王的故事 2023-07-10 14:44:32
需要重新審視,因為我做的某件事在這里出錯了。我嘗試將狀態附加到切片,但不起作用我也嘗試使用取消引用type ServerStatuses []ServerStatusstatuses := new(ServerStatuses)status := &ServerStatus{    time:      time,    available: available,    url:       url,}statuses = append(statuses, *status)append在這種情況下將不起作用,盡管狀態是一個切片。
查看完整描述

2 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

這與命名類型無關。這是因為statusesis a *ServerStatuses,它是指向 slice 的指針,而不是切片。您只能附加到切片,而不能附加到指針。請記住,它new返回一個指向給定類型的指針。如果替換new(ServerStatuses)ServerStatuses{},它可以工作:https ://play.golang.org/p/OYdTbLoVifD


查看完整回答
反對 回復 2023-07-10
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

在Go中,new內置函數返回指定類型的指針。因此,new(ServerStatuses)給你一個ServerStatuses類型為 ( *ServerStatuses) 的指針。

而且您還使用了附加語句。但append()僅附加到slicestatus您正在嘗試將type 的 var的指向值附加SeverStatusstatusestype 的var *ServerStatuses。這就是為什么事情沒有按照你的預期進行。如果我們模擬您針對 var 的相應類型使用的語句:

statuses           =    append(  statuses,         *status       )
*ServerStatuses   <--   append(  *ServerStatuses,  ServerStatus  )

因此,您必須將statusesvar 聲明為slice類型。例如,

statuses := make(ServerStatuses, 0)

請參閱示例https://play.golang.org/p/RXETzrxSVqm


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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