2013-04-13 86 views
5

我有一个地图无法分配到结构体变量

var users = make(map[int]User) 

我填补了地图,一切都很好。后来,我想分配给用户的其中一个值,但出现错误。

type User struct { 
    Id int 
    Connected bool 
} 

users[id].Connected = true // Error 

我也试过写一个函数来赋值给它,但那也行不通。

+0

呸,它是一个错字。 –

+0

什么错字?我看不到它:( – OscarRyz

回答

7

例如,

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}] 
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]) 
} 

Playground


输出:

&main.User{Id:314, Connected:false} 
&main.User{Id:314, Connected:true}