2013-04-13 19 views
5

Mam mapęnie można przypisać do zmiennej struct

var users = make(map[int]User) 

jestem napełniania mapę i wszystko jest w porządku. Później chcę przypisać jedną z wartości użytkownika, ale pojawia się błąd.

type User struct { 
    Id int 
    Connected bool 
} 

users[id].Connected = true // Error 

Próbowałem również napisać funkcję, która do niego przypisuje, ale to też nie działa.

+0

Ba, to była literówka. –

+0

co za literówka? Nie widzę tego :( – OscarRyz

Odpowiedz

7

Na przykład

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

wyjściowa:

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

W tym przypadku jest to pomocne do przechowywania wskaźników na mapie zamiast struktury:

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


wyjściowa:

&main.User{Id:314, Connected:false} 
&main.User{Id:314, Connected:true} 
Powiązane problemy