Вывести значения массива в Go - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь определить массив в структуре в Go, в массиве устройств должно быть 3 элемента строк типа, но я не могу выяснить, как печатать значения массива устройств

Под выходами "не совпадаютТипы строка и [2] строка ".Есть намеки?

type Nodes struct {
Nodes []Node `json:"nodes"`
}

type Node struct {
devices       [2]string `json:"devices"`
}

var nodes Nodes
fmt.Println("Device: %+v" + nodes.Nodes[i].devices)

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Вы должны использовать fmt.Printf вместо Println:

fmt.Printf("Device: %+v", nodes.Nodes[i].devices)

Или вы можете сделать что-то вроде этого:

for _, node := range nodes.Nodes {
    for _, device := range node.devices {
        fmt.Println("Device : " + device)
    }
}

Вывод:

Device : Android
Device : iOS
0 голосов
/ 15 декабря 2018

Ваша ошибка в том, что вы пытаетесь объединить string и [2]string:

"Device: %+v" + nodes.Nodes[i].devices

В частности, "Device: %+v" - это строка, а nodes.Nodes[i].devices - это [2]string.

Но на более высоком уровне это результат неправильного использования fmt.Println, что становится очевидным при использовании глагола форматирования %+v, что не имеет смысла в контексте Println.Что вы, вероятно, хотите, это fmt.Printf:

fmt.Printf("Device: %+v\n", nodes.Nodes[0].devices)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...