инициализация различных значений карты в разных местах в Голанге - PullRequest
0 голосов
/ 28 февраля 2019

Я создаю карту структур для хранения различной информации.Пример структуры, которую я использую:

type Test struct{
  Value1 string
  Value2 string
  Value3 string
  Value4 string
}

func main() {
  testMap := make(map[string]*Test) //using a pointer to map
  func2(testMap)
  //pass map to another function for more additions.
}

func func2 (testMap map[string]*Test) {
  a, b := getVal(); //get some random values
  res := concat(a,b) //basically create a string key based on values a and b
  testMap[res].value1 = a   //****
  testMap[res].value2 = b
  //do something else
  testMap[res].value3 = "hello"

}

Я пытаюсь создать карту и добавлять к ней значения по мере их получения, но я получаю ошибку invalid memory address or nil pointer dereference в строке ****(см. код для ***).

1 Ответ

0 голосов
/ 28 февраля 2019

Попробуйте:

func func2 (testMap map[string]*Test) {
  a, b := getVal(); //get some random values
  res := concat(a,b) //basically create a string key based on values a and b
  testMap[res] = &Test{
     Value1: a,
     Value2: b,
     Value3: "string",
  }

}

Или, если вы хотите сначала создать объект, затем заполните значение, попробуйте

func func2 (testMap map[string]*Test) {
  a, b := getVal(); //get some random values
  res := concat(a,b) //basically create a string key based on values a and b
  testMap[res] = &Test{}
  testMap[res].value1 = a   //****
  testMap[res].value2 = b
  //do something else
  testMap[res].value3 = "hello"

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