地図を持っています
var users = make(map[int]User)
マップを埋めていますが、すべて問題ありません。後で、User の値の 1 つに割り当てたいのですが、エラーが発生します。
type User struct {
Id int
Connected bool
}
users[id].Connected = true // Error
また、それに割り当てる関数を作成しようとしましたが、それも機能しません。
地図を持っています
var users = make(map[int]User)
マップを埋めていますが、すべて問題ありません。後で、User の値の 1 つに割り当てたいのですが、エラーが発生します。
type User struct {
Id int
Connected bool
}
users[id].Connected = true // Error
また、それに割り当てる関数を作成しようとしましたが、それも機能しません。
例えば、
package main
import "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}]
この場合、構造体ではなくマップにポインターを格納すると便利です。
package main
import "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}