需要重新审视,因为我做的某件事在这里出错了。我尝试将状态附加到切片,但不起作用我也尝试使用取消引用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 关注
- 97 浏览
添加回答
举报
0/150
提交
取消