2013-04-13 28 views
5

Tôi đã có một bản đồKhông thể gán cho struct biến

var users = make(map[int]User) 

Tôi điền bản đồ và tất cả là tốt. Sau đó, tôi muốn gán cho một trong các giá trị của Người dùng, nhưng tôi gặp lỗi.

type User struct { 
    Id int 
    Connected bool 
} 

users[id].Connected = true // Error 

Tôi cũng đã cố gắng viết một hàm gán cho nó, nhưng điều đó cũng không hoạt động.

+0

Bah, đó là một lỗi đánh máy. –

+0

lỗi đánh máy nào? Tôi không thể nhìn thấy nó :( – OscarRyz

Trả lời

7

Ví dụ,

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

Output:

map[42:{42 false}] 
map[42:{42 true}] 
2

Trong trường hợp này nó là hữu ích để lưu trữ con trỏ trong bản đồ thay vì một cấu trúc:

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


Output:

&main.User{Id:314, Connected:false} 
&main.User{Id:314, Connected:true} 
Các vấn đề liên quan