Сборка структуры в текст в Go
Структуру превращают в текст командой
из пакета encoding/json. Результат
имеет тип среза байт, а рядом возвращают
ошибку: ее проверяют до того, как байты
отправят в файл или по сети.
Для вывода на экран срез байт часто переводят в строку. Так видно кавычки и скобки так же, как в файле.
Соберем пользователя с именем и возрастом:
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
u := User{Name: "ann", Age: 20}
data, err := json.Marshal(u)
if err != nil {
fmt.Println("error")
return
}
fmt.Println(string(data))
}
На экране {"name":"ann","age":20}.
При сбое в data ничего полезного
не кладут, а ветку с печатью пропускают.
Тот же прием работает для карты, если ключи имеют тип строки:
package main
import (
"encoding/json"
"fmt"
)
func main() {
m := map[string]int{"a": 1, "b": 2}
data, err := json.Marshal(m)
if err != nil {
fmt.Println("error")
return
}
fmt.Println(string(data))
}
Дана структура:
type Point struct {
X int `json:"x"`
Y int `json:"y"`
}
Соберите текст для точки с координатами
3 и 4 и выведите его.
Дана структура:
type Flag struct {
On bool `json:"on"`
}
Соберите текст для значения с полем
On равным true и выведите
результат.
Дана структура:
type Empty struct{}
Соберите текст для нулевого значения типа и скажите, что окажется на экране.