猿问

无法分配给结构变量

我有地图


var users = make(map[int]User)

我正在填写地图,一切都很好。后来,我想分配给 User 的值之一,但出现错误。


type User struct {

  Id int

  Connected bool

}


users[id].Connected = true   // Error

我也尝试编写一个函数来分配给它,但这也不起作用。


当年话下
浏览 153回答 2
2回答

PIPIONE

例如,package mainimport "fmt"type User struct {    Id        int    Connected bool}func main() {    users := make(map[int]User)    id := 42    user := User{id, false}    users[id] = user    fmt.Println(users)    user = users[id]    user.Connected = true    users[id] = user    fmt.Println(users)}输出:map[42:{42 false}]map[42:{42 true}]

RISEBY

在这种情况下,将指针存储在映射中而不是结构中是有帮助的:package mainimport "fmt"type User struct {        Id        int        Connected bool}func main() {        key := 100        users := map[int]*User{key: &User{Id: 314}}        fmt.Printf("%#v\n", users[key])        users[key].Connected = true        fmt.Printf("%#v\n", users[key])}输出:&main.User{Id:314, Connected:false} &main.User{Id:314, Connected:true}
随时随地看视频慕课网APP

相关分类

Go
我要回答