Я намагаюся надати аргументи на Диску GoogleAPI GoLang (хоча вам, ймовірно, не потрібно нічого знати про API, щоб відповісти на запитання). Я новачок у Go, і повідомлення про помилку побудови мене бентежить.
Один з необов’язкових аргументів - це масивбатьківські папки, в які слід зберігати завантажений файл. Батьківська папка посилається на структуру ParentRefernce. Дивіться такий фрагмент коду Golang:
parent := drive.ParentReference{Id: parent_folder}
parents := [...]*drive.ParentReference{&parent}
driveFile, err := service.Files.Insert(
&drive.File{Title: "Test", Parents: parents}).Media(goFile).Do()
Помилка збирання, яку я отримую, стосується останнього рядка вищевказаного фрагмента: не може використовувати батьків (тип [1] * drive.ParentReference) як тип [] * drive.ParentReference у значенні поля
Моя плутанина полягає в розрізненні між[1] * Тип та [] * Тип. Схоже, перший - це масив певної довжини, а останній - масив без заданої довжини. Будь-яке уточнення тут буде корисним.
Відповіді:
4 для відповіді № 1Як ви зазначали, фрагменти та масиви - це два різні типи Go і ведуть себе по-різному. Отже [] Тип та [1] Тип - це дві різні речі, і їх не можна взаємозамінно використовувати. Перевірте чудово пояснення скибочок для отримання додаткової інформації про них.
Однак ваше виправлення дещо складніше, ніж потрібно. Ви повинні мати можливість просто користуватися
parents := []*drive.ParentReference{&parent}
де ви зараз є
parents := [...]*drive.ParentReference{&parent}
Якщо ви інстанціюєте змінну у вигляді фрагмента, вам не доведеться пізніше розрізати її.
0 для відповіді № 2
Моя проблема, мабуть, не знала, що шукати - [] * Введіть не дуже хороший запит Google.
Однак я знайшов відповідь: [1] * Тип - це масив, а [] * Тип - це фрагмент. Тож рішення полягає в тому, щоб просто нарізати батьків, так що на кшталт:
Parents: parents[:]
Чи трюк.