5

地図を持っています

var users = make(map[int]User)

マップを埋めていますが、すべて問題ありません。後で、User の値の 1 つに割り当てたいのですが、エラーが発生します。

type User struct {
  Id int
  Connected bool
}

users[id].Connected = true   // Error

また、それに割り当てる関数を作成しようとしましたが、それも機能しません。

4

2 に答える 2

8

例えば、

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}]
于 2013-04-13T05:14:00.923 に答える
2

この場合、構造体ではなくマップにポインターを格納すると便利です。

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}
于 2013-04-13T09:30:07.017 に答える