需要崭新的外观,因为我做某件事,在这里我弄错了。 我试图将状态附加到切片中,这是行不通的
我也尝试使用取消引用
type ServerStatuses []ServerStatus
statuses := new(ServerStatuses)
status := &ServerStatus{
time: time,
available: available,
url: url,
}
statuses = append(statuses, *status)
append
在这种情况下不起作用,尽管状态是片。
答案 0 :(得分:4)
与命名类型无关。这是因为statuses
是*ServerStatuses
,它是切片的指针,而不是切片。您只能追加到切片,而不能追加到指针。请记住,new
返回一个指向给定类型的指针。如果将new(ServerStatuses)
替换为ServerStatuses{}
,它将起作用:https://play.golang.org/p/OYdTbLoVifD
答案 1 :(得分:3)
在Go中,new
内置函数返回指定类型的指针。因此,new(ServerStatuses)
为您提供了ServerStatuses
的指针,键入(*ServerStatuses
)。
您还使用了一条append语句。但是append()
仅附加到slice
后面。您试图将类型{{1}的status
var的指向值附加到类型SeverStatus
的var statuses
上。这就是为什么它没有按您期望的那样进行。如果我们针对相应的var类型模拟您使用的语句:
*ServerStatuses
因此,您必须将statuses = append( statuses, *status )
*ServerStatuses <-- append( *ServerStatuses, ServerStatus )
var声明为statuses
类型。例如,
slice