Go - Как обновить карту, которая является структурным полем? - PullRequest
0 голосов
/ 22 апреля 2020

Я попробовал следующее, чтобы обновить пустую карту, объявленную как поле структуры:

package main

type MyStruct struct {
    scoreboard map[string]int
}

func main() {
    mystruct := NewMyStruct()
    mystruct.SubmitWord('test')
}

func NewMyStruct() MyStruct {
    return MyStruct{}
}

func (mystruct *MyStruct) SubmitWord(word string) int {
    mystruct.scoreboard[word] = len(word)
    return len(word)
}

, но я получил ошибку с exit status 2.

Проблемная строка c быть mystruct.scoreboard[word] = len(word)

Все, что я могу найти, похоже, говорит о том, что это нормально, но я не нашел других примеров, когда карта находится внутри структуры.

1 Ответ

2 голосов
/ 22 апреля 2020

вам нужно сначала выделить карту

package main


type MyStruct struct {
    scoreboard map[string]int
}

func main() {
    mystruct := NewMyStruct()
    mystruct.SubmitWord("test")
}

func NewMyStruct() MyStruct {
    var x MyStruct
    x.scoreboard=make(map[string]int)
    return x
}

func (mystruct *MyStruct) SubmitWord(word string) int {
    mystruct.scoreboard[word] = len(word)
    return len(word)
}

детская площадка: https://play.golang.org/p/ipqHJ8TdUfh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...