Go の割り当てで配列を解凍する方法は?

Mary-Kate Olsen
リリース: 2024-11-19 01:00:03
オリジナル
767 人が閲覧しました

How to Unpack Arrays in Go Assignments?

Go の割り当てでの配列のアンパック

Go は Python のような複数の変数への配列の直接アンパックをサポートしていませんが、同様のことを実現する戦略があります。

アドホック アンパック関数

1 つの方法は、カスタム関数を定義することです。

func splitLink(s, sep string) (string, string) {
    x := strings.Split(s, sep)
    return x[0], x[1]
}
ログイン後にコピー

その後、次を使用して配列をアンパックできます。この関数:

name, link := splitLink("foo\thttps://bar", "\t")
ログイン後にコピー

可変個引数ポインター引数

別の方法では、可変個引数ポインター引数を使用します:

func unpack(s []string, vars... *string) {
    for i, str := range s {
        *vars[i] = str
    }
}
ログイン後にコピー

これにより、次のように記述できます。

var name, link string
unpack(strings.Split("foo\thttps://bar", "\t"), &name, &link)
ログイン後にコピー

ただし、これには変数を明示的に宣言する必要があり、読みにくくなります。

より多くの値を処理する

値の数がunpacked が知られている場合は、一連の代入ステートメントを使用できます:

var name, link, description string
x := strings.Split("foo\thttps://bar\tDescription", "\t")
name = x[0]
link = x[1]
description = x[2]
ログイン後にコピー

または、ループを使用して配列を反復処理し、変数に値を代入することもできます:

var name, link, description string
for i := 0; i < len(x); i++ {
    switch i {
    case 0:
        name = x[i]
    case 1:
        link = x[i]
    case 2:
        description = x[i]
    }
}
ログイン後にコピー

以上がGo の割り当てで配列を解凍する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート