/ / Golang配列型の混乱-配列、go、google-drive-sdk

Golangアレイタイプの混乱 - アレイ、go、google-drive-sdk

Googleドライブに引数を提供しようとしていますGoLang API(質問に答えるためにAPIについて何も知っている必要はないかもしれませんが)私はGoを初めて使用するので、ビルドエラーメッセージで混乱します。

オプションの引数の1つは、アップロードされたファイルが格納される親フォルダー。親フォルダーは、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()

私が取得しているビルドエラーは、上記のスニペットの最終行に関するものです。 フィールド値のタイプ[] * drive.ParentReferenceとして親(タイプ[1] * drive.ParentReference)を使用できません

私の混乱は、[1] * Typeおよび[] * Type。前者は特定の長さの配列で、後者は長さが指定されていない配列のようです。ここでの説明は役に立ちます。

回答:

回答№1は4

お気づきのように、スライスと配列はGoでは2つの異なるタイプであり、動作が異なります。したがって、[] Typeと[1] Typeは2つの異なるものであり、交換して使用することはできません。素晴らしいをチェック スライスの説明 それらの詳細については。

ただし、修正は必要以上に複雑です。そのまま使えるはず

parents := []*drive.ParentReference{&parent}

あなたが現在いる場所

parents := [...]*drive.ParentReference{&parent}

変数をスライスとしてインスタンス化する場合、後でスライスする必要はありません。


回答№2の場合は0

私の問題は明らかに何を検索すべきかわからなかった-[] * Typeは非常に良いGoogleクエリではない。

[1] * Typeは配列ですが、[] * Typeはスライスです。したがって、解決策は単純に親をスライスすることです。

Parents: parents[:]

トリックを行います。