Go における型キャストと変換の包括的なガイド

王林
リリース: 2024-08-20 07:00:31
オリジナル
366 人が閲覧しました

A Comprehensive Guide to Type Casting and Conversions in Go

Go は Golang とも呼ばれ、静的型付け言語です。これは、すべての変数の型がコンパイル時に既知であることを意味し、コードの安全性と予測可能性を提供します。ただし、これには、ある型から別の型への変換が明示的かつ意図的に行われる必要もあります。この記事では、基本的な数値変換からより複雑なインターフェイスやポインタの変換まで、Go で利用できるさまざまな型キャストと変換メカニズムについて説明します。

1. 基本的な型変換

Go では、整数、浮動小数点数、文字列などの基本型間の変換が可能ですが、これらの変換は明示的に行う必要があります。

数値型

異なる数値型間の変換は簡単ですが、明示的に行う必要があります:

リーリー

この例では、int を float64 と uint に変換します。 Go は自動 (暗黙的) 型変換を実行しないため、これらの変換は明示的です。

文字列とバイトスライス

Go 文字列は不変ですが、変更可能なバイト スライス ([]byte) との間で変換できます:

リーリー

同様に、文字列とルーン スライス ([]rune) の間で変換することもできます。ここで、rune は int32 の型エイリアスです:

リーリー

2. カスタム型変換

Go では、既存の型に基づいて独自の型を定義できます。カスタム型とその基礎となる型の間の変換は明示的に行われます:

リーリー

この明示的な変換は、コンパイラーがコードの安全性を確認できるようにするために必要です。

3. ポインタ変換

Go のポインタは変数のメモリ アドレスを参照します。値とそのポインタの間で変換できます:

リーリー

4. インターフェースの型変換

Go のインターフェースは、一連のメソッドを定義するために使用されます。具体的な型とインターフェイスの間で変換できます:

リーリー

型アサーション

型アサーションは、インターフェースの具体的な値へのアクセスを提供します:

リーリー

タイプスイッチ

タイプスイッチを使用すると、インターフェースの動的タイプに基づいてさまざまなアクションを実行できます:

リーリー

5. 安全でない変換

安全でないパッケージを使用すると、Go のタイプ セーフをバイパスでき、本来は違法となる変換が可能になります:

リーリー

警告: 安全でない変換は、未定義の動作を引き起こす可能性があるため、慎重に使用し、絶対に必要な場合にのみ使用してください。

6. チャネルタイプの変換

チャネルは Go の強力な機能であり、ゴルーチン間の通信を可能にします。双方向チャネルと単方向チャネルの間で変換できます:


リーリー

7. 構造体と配列の変換

同一のレイアウトを持つ構造体または配列間の変換には明示的なキャストが必要です:


リーリー

8. スライス変換

スライスは配列への参照であり、同じタイプのスライス間で変換することはできますが、異なるタイプのスライス間で変換するには明示的な変換が必要です:


リーリー

9. Nil インターフェース変換

Go の nil 値は任意のインターフェイス タイプに割り当てることができます:


リーリー

10. 関数の型変換

署名に互換性がある場合、Go 関数はさまざまな型に変換できます。


リーリー

11. 配列からスライスへの変換

配列からスライスを作成できます。これは基本的に配列への参照です:


リーリー

結論

Go の型キャストと変換は設計上明示的であるため、コードがより安全で理解しやすくなります。 Go は明示的な変換を要求することで、他のプログラミング言語で一般的な、暗黙的な型強制によって発生する可能性のある微妙なバグを防ぐのに役立ちます。これらの変換を理解し、正しく使用することは、堅牢で効率的な Go プログラムを作成するために非常に重要です。

以上がGo における型キャストと変換の包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!