Golang のキャスト例

Golang Nokyasuto Li



値のデータ型をある型から別の型に変更するプロセスは、型キャストと呼ばれ、型変換とも呼ばれます。 Go では、型キャストは明示的な型変換を使用して行われます。 Go は強い型付けをサポートしています。したがって、型間で変換するときは、目的を明示的に示す必要があります。これにより、タイプ セーフが促進され、入力エラーの可能性が減ります。この記事では、Go におけるさまざまなタイプのキャストについて説明します。

例 1: Golang の基本的な型のキャスト

Go での直接の基本的なキャストの例から始めましょう。変数の型を変更するには型キャストが必要になるためです。

パッケージ 主要
輸入 (
「fmt」
)
機能 主要 () {
だった バツ 整数 = 31
:= float64 ( バツ )
fmt プリントイン ( )
}

ここでは、「int」型の「x」という名前の変数を宣言し、値 31 を代入することで main 関数から始めます。次に、変数「y」が短縮代入演算子「:=」を使用して宣言されます。 「y」の型は、「x」を「float64」に変換した右辺の式から自動的に決まります。そこで、このプログラムでは「x」の値を「float64」に変換して「y」に代入しています。







Go の基本的なキャストから取得された結果は次のように表示されます。





例 2: Golang の暗黙的な型キャスト

異なる型間での暗黙的な型キャストは許可されません。 Go は強い型付けを強制します。これは、明示的な変換を行わずに、ある型の値を別の型として直接割り当てたり、使用したりすることができないことを意味します。以下では、Go によって例外を生成する暗黙的なキャストを実行してみます。





パッケージ 主要
輸入 「fmt」
機能 主要 () {
だった 整数 整数 = 9 08
fmt プリントフ ( 「整数は %g です」 整数 )
}

以下は、「整数」変数が「int」型で宣言されている main() 関数で始まるコードです。 「整数」変数に割り当てられる値は、浮動小数点数である 9.08 です。浮動小数点値を整変数に直接代入しようとしているため、型不一致エラーが発生します。次に、「fmt」パッケージの「printf」関数を使用して、「%g」形式指定子を使用して「integer」変数の値を出力します。

予想どおり、暗黙的な型キャストは Golang では受け入れられません。以前の暗黙的な型キャストでは、次のエラーが生成されます。



例 3: Golang の明示的な型キャスト

明示的な型変換により、意図を明示的に示しながら、互換性のある型間で値を安全に変換できます。これにより、型変換が確実に認識され、偶発的な型エラーの防止に役立ちます。次の明示的なキャストについて考えてみましょう。

パッケージ 主要
輸入 「fmt」

機能 主要 () {
だった floatVal float32 = 6 75
だった 整数 整数 = 整数 ( floatVal )
fmt プリントフ ( 「浮動小数点値は %g です \n floatVal )
fmt プリントフ ( 「整数値は %d です」 整数 )
}

ここでは、「float32」型で「floatVal」変数を作成し、「6.75」の値を代入しています。次に、「intVal」変数を「int」型で宣言します。 floatVal の値を intVal に代入するには、型変換が使用されます。 floatVal を整数値に変換するには、floatVal を入力として「int」関数を使用します。その後、「fmt.Printf(“Float Value is %g\n”, floatVal)」は、浮動小数点値の出力に適した %g 形式指定子を使用して floatVal の値を出力します。 「fmt.Printf(“Integer Value is %d”, intVal)」コード行は、整数値の出力に適した %d 形式指定子を使用して intVal の値を出力します。

次の出力は、キャスト後に floatVal と intVal の両方の値を生成します。

例 4: 平均を取得するための Golang の型キャスト

次に、キャストを実行して、指定された値から平均値を取得します。以下に提供されているソースコードを見てみましょう。

パッケージ 主要
輸入 「fmt」
機能 主要 () {
だった 合計 整数 = 900
だった 私の番号 整数 = 二十
だった 平均 float32
平均 = float32 ( 合計 ) / float32 ( 私の番号 )
fmt プリントフ ( 「平均は = %f \n 平均 )
}

ここでは、最初に 3 つの変数を宣言します。 「total」は、値 900 で初期化される整数変数です。「MyNumber」は、値 20 で初期化される整数変数です。計算された平均は、float32 の「average」変数に格納されます。次に、計算を実行するために平均式が与えられます。除算が浮動小数点除算として確実に行われるようにするために、「total」と「MyNumber」の値は型変換を使用して float32 に変換されます。計算された平均は、「平均」変数に割り当てられます。最後に、「printf」関数で使用される「%f\n」フォーマット文字列は、浮動小数点値を出力し、その後に改行文字を出力することを指定します。

平均としての結果の値は、前のコードで型キャストを暗黙的に指定した後にフェッチされます。

例 5: Golang Int と String 型のキャスト

さらに、Go は Int 型と String 型の間のキャストも提供します。これは、strconv パッケージの機能を使用して実現できます。

パッケージ 主要
輸入 (
「fmt」
「strconv」
)
機能 主要 () {
だった str = 「1999年」
_ := strconv トレーラー ( s )
fmt プリントイン ( )
だった 整数 整数 = 1999年
toStr := strconv 溺れた ( 整数 )

fmt プリントイン ( toStr )
}

これは 2 つの変数の宣言で始まるコードです。 「str」は「1999」の値で初期化される文字列変数であり、「integer」は「1999」の値で初期化される整数変数です。その後、「strconv.Atoi()」関数を使用して「str」文字列を整数値に変換します。戻り値「v」は変換された整数を表し、空白の「_」識別子は Atoi() によって返される潜在的なエラーを無視するために使用されます。

次に、strconv.Itoa() 関数を使用して、整数を文字列値に変換します。戻り値「toStr」は、変換された文字列を表します。

出力には、文字列「1999」から整数への変換と、元の値「1999」を生成する文字列への変換が表示されます。

例 6: 文字列とバイト間の Golang 型キャスト

また、Go のキャストは文字列型やバイト型でも実行できます。次のコードは、文字列とバイト スライス間の変換を示しています。

パッケージ 主要
輸入 (
「fmt」
)
機能 主要 () {
だった ミストル = 'ちょっと、そこ'
だった b1 [] バイト = [] バイト ( myStr )
fmt プリントイン ( b1 )
toString := ( b1 )
fmt プリントイン ( toString )
}

ここでは、変数は最初に「myStr」および「b1」として宣言され、特定の値で初期化されます。次に、[]byte(myStr) 式は、型変換を使用して「myStr」文字列をバイト スライスに変換します。結果のバイト スライスを変数「b1」に割り当てます。その後、「string(b1)」式は、型変換を使用してバイト スライス b1 を文字列に変換します。結果の文字列を「toString」変数に割り当てます。

出力には、「Hey There」文字列とそれに対応するバイト スライス表現の間の変換が次のように表示されます。

例 7: 平方根を取得するための Golang 型キャスト

ここで、Go でキャストを実行して平方根の結果を求めます。コードは次のように配置されます。

パッケージ 主要
輸入 (
「fmt」
'算数'
)
機能 主要 () {
だった n 整数 = 177
だった 平方N float64
平方N = 算数 平方メートル ( float64 ( n ))
fmt プリントフ ( 「%d の平方根は %.2f です \n n 平方N )
}

ここでは、変数「n」が int として宣言され、値「144」が割り当てられます。 「SqrtN」変数は float64 として宣言され、計算された「n」の平方根を格納します。次に、 math.Sqrt() 関数が「n」の平方根を計算するために展開されます。 math.Sqrt() は float64 引数を想定しているため、「n」の値は float64(n) を使用して float64 に変換されます。その後、「%d の平方根は %.2f\n」という形式の文字列が、整数値 (%d) と浮動小数点値 (%.2f) を指定する「printf」関数で呼び出します。 「%.2f」の「.2」精度指定子により、平方根が小数点以下 2 桁で出力されます。

指定された値の平方根を示す次の出力が取得されます。

結論

Go でのキャストについては、すべて実行可能な個別の例を使用して説明します。 Go では、型キャストは明示的であるため、強力な型付けが強制され、コードの明確さと信頼性が促進されることに注意してください。