ホームページ  >  記事  >  バックエンド開発  >  golangの配列変換

golangの配列変換

WBOY
WBOYオリジナル
2023-05-21 20:02:35655ブラウズ

Golang の配列変換とは、ある型の配列を別の型の配列に変換することを指します。 Golang には、配列変換を簡単に実装できるいくつかの組み込み関数とメソッドが用意されています。

1. 配列型の変換

  1. 数値型配列の変換

Golang では、int などの異なる数値型の配列を相互に変換できます。型配列は float32 または float64 型配列に変換でき、float32 型配列は int 型配列に変換できます。この配列型の変換は、主に型アサーションによって実現されます。例:

var a = [5]int{1, 2, 3, 4, 5}
var b = [5]float64{1.1, 2.2, 3.3, 4.4, 5.5}

// 将a转换为float64类型数组
c := make([]float64, len(a))
for i, v := range a {
    c[i] = float64(v)
}

// 将b转换为int类型数组
d := make([]int, len(b))
for i, v := range b {
    d[i] = int(v)
}

ここでは make() 関数を使用して新しい配列を作成し、元の配列の各要素がターゲット配列に変換されます。ループ要素。この型変換は数値型間でのみ実行でき、文字列型配列を数値型配列に直接変換できないことに注意してください。

  1. 文字列型配列の変換

文字列型配列の変換は、文字列型が型アサーションをサポートしていないため、比較的複雑です。 Golang では、strconv パッケージが提供する関数を使用して、文字列配列を数値型の配列に変換できます。例:

var s = [5]string{"1", "2", "3", "4", "5"}

// 将s转换为int类型数组
e := make([]int, len(s))
for i, v := range s {
    e[i], _ = strconv.Atoi(v)
}

// 将s转换为float64类型数组
f := make([]float64, len(s))
for i, v := range s {
    f[i], _ = strconv.ParseFloat(v, 64)
}

ここでは、strconv パッケージが提供する Atoi() 関数と ParseFloat() 関数を使用します。文字列を数値型に変換するために使用されます。これらの関数にも制限があることに注意してください。たとえば、文字列が正当な数値形式でない場合、変換は失敗します。

2. 配列要素の変換

全体的な配列型の変換に加えて、場合によっては配列内の単一要素の変換も必要になります。 Golang では、for ループを通じて配列をトラバースし、配列要素をターゲットの型に 1 つずつ変換できます。例:

var g = [5]int{1, 2, 3, 4, 5}

// 将g中所有元素转换为float64类型
for i := 0; i < len(g); i++ {
    g[i] = int(float64(g[i]) * 1.5)
}

ここでは、浮動小数点乗算を使用して配列要素を 1.5 倍します。その後、型は int. 型にキャストされます。この方法では元の配列が直接変更されることに注意してください。元の配列を保持する必要がある場合は、要素を 1 つずつ新しい配列に格納できます。例:

var h = [5]int{1, 2, 3, 4, 5}

// 将g中所有元素转换为float64类型
j := make([]float64, len(h))
for i, v := range h {
    j[i] = float64(v) * 1.5
}

ここでは、新しい配列 j が作成され、g の各要素が float64 型に変換され、1.5 倍され、その結果が対象の配列に格納されます。

概要:

配列変換は、Golang の一般的な操作です。異なる型の配列間の変換は、型アサーションと型変換を通じて実現でき、配列は for ループを通過することもできます。配列要素を 1 つずつ処理します。配列要素の変換は元の配列に直接影響するため、配列変換を実行するときはデータのセキュリティに注意する必要があることに注意してください。

以上がgolangの配列変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:golangの開発手順次の記事:golangの開発手順