Я новичок в Golang и еще не уверен, как использовать определенные языковые конструкции. В настоящее время у меня есть следующий код (с тестовыми выходами отладки), который не дает ожидаемого результата:
json, _ := json.Marshal(struct)
fmt.Println(json)
f,_ := os.Create(fmt.Sprintf("/tmp/%s.json", "asd"))
i,_ := f.Write(json)
fmt.Println(i)
b, err := ioutil.ReadAll(f)
fmt.Print(b)
Я ожидаю следующего поведения:
- перевод структуры в массив байтов
- создание нового файла
- добавление байтового массива к файлу
Однако файл всегда пуст, когда я запускаю код в своей среде (AWS Lambda), а также использовать его в Golang Playground. Вывод приведенного выше кода выглядит следующим образом:
[123 34 ... <hug array of bytes>]
1384
[]
, что наводит меня на мысль, что я использую f.Write()
неправильно, хотя я следовал документации пакета. Все остальные результаты указывают на ожидаемое поведение, в чем же моя ошибка? Я несколько ограничен использованием интерфейса File
, иначе я бы выбрал ioutil.WriteFile()
. Мое предположение - неправильное понимание указателя / значений в какой-то момент, но компилятор предотвратил использование &f
.