Печатать значения массива в Go

Я пытаюсь определить массив в структуре в 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)
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
0
2 707
2

Ответы 2

Ваша ошибка связана с тем, что вы пытаетесь объединить 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)

Вы должны использовать 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

Другие вопросы по теме