ホームページ >バックエンド開発 >Golang >Golangで整数変換を行う方法

Golangで整数変換を行う方法

PHPz
PHPzオリジナル
2023-04-25 18:28:441001ブラウズ

コードを記述するとき、多くの場合、データ型を変換する必要があります。これらの変換は通常、文字列を整数または浮動小数点数に変換したり、整数を文字列に変換したりするなど、異なるデータ型間で行われます。 Golang では、整数変換が特に重要です。この記事では、Golangで整数変換を行う方法とその注意点を紹介します。

Golang は、異なるサイズの整数型の相互変換をサポートしています。たとえば、uint8 を int8 に変換したり、int64 を uint8 に変換したりできます。ただし、型変換は、対象の型の表現範囲が変換後の値の値の範囲を完全に包含できる場合にのみ実行できることに注意してください。

たとえば、int16 の最大値 (32767) を int8 に変換すると、データ オーバーフローが発生し、結果が負になる可能性があります。同様に、123.45 の浮動小数点数値リテラル (float64 型として解釈される) を uint16 に変換すると、小数部分が失われ、切り捨てられた整数値が得られます。

以下は、Golang で整数変換を実行する方法を示すいくつかの例です:

package main

import (
    "fmt"
    "math"
)

func main() {
    // 将int转换为float
    a := 10
    b := float64(a)
    fmt.Printf("a=%d, b=%f\n", a, b)

    // 将float转换为int
    c := 3.14159
    d := int(c)
    fmt.Printf("c=%f, d=%d\n", c, d)

    // 将uint64转换为int32
    const maxUint64 = math.MaxUint64
    var e uint64 = maxUint64
    f := int32(e)
    fmt.Printf("e=%d, f=%d\n", e, f)

    // 将int8转换为uint8
    var g int8 = -12
    h := uint8(g)
    fmt.Printf("g=%d, h=%d\n", g, h)
}

上の例では、int 型変数 a を float64 と float64 にそれぞれ変換します。 c 型は int 型に変換され、uint64 型の変数 e は int32 に変換され、int8 型の変数 g は uint8 に変換されます。いずれの場合も、初期値と変換結果を出力しました。符号なし整数型 (uint8、uint16 など) を符号付き型に変換する前に、その範囲を慎重に検討する必要があることに注意してください。元の値がターゲット型の正の表現の範囲を超える場合、結果は負の値になります。

明示的な変換に加えて、Golang は暗黙的な整数変換もいくつか提供します。場合によっては、暗黙的な変換を実行するとコードがきれいになることがありますが、注意が必要な場合もあります。

たとえば、加算、減算、乗算、または左シフト演算に符号付き整数型 (int8 など) の変数と符号なし整数型 (uint8 など) の変数を使用する場合、後者が変換されます。 to AND 前者と同じ符号付き型。この変換により、コードが読みやすくなり、オーバーフローも防ぐことができます。ただし、それ以外の演算子を使用する場合は、明示的に変換命令を発行する必要があります。

Golang には、整数変換に関する「暗黙のルール」がいくつかあります。たとえば、演算子を使用してサイズの異なる 2 つの整数型を加算または減算する場合、Golang はそれらを自動的に同じ型に変換し、必要に応じて符号拡張します。ただし、整数型を別の型の変数 (文字列やインターフェイス型など) に割り当てる場合は、必要な型に明示的に変換する必要があります。

要約:

  • Golang では、整数値を相互に変換できますが、ターゲット型の範囲はソース値の範囲に対応できる十分な大きさである必要があります。 。
  • 明示的または暗黙的な整数変換を使用できますが、後者は予期しない変換エラーを防ぐために注意して使用する必要があります。
  • 整数変換を実行する場合、特に整数型の符号付きおよび符号なしの性質を考慮する場合には、基本的な数学的知識が必要です。

以上がGolangで整数変換を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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