golang アサーションの実装

王林
リリース: 2023-05-13 10:08:37
オリジナル
1185 人が閲覧しました

Golang は、強力な同時実行性とシステム プログラミング機能を備えた言語です。これは、プログラミングをより速く、より簡単にするために設計されたコンパイル言語です。アサーションは Golang の重要な概念です。これにより、プログラマーはコードの作成中に変数またはインターフェイスの型を「アサート」できるため、実行時に正しい型をチェックできます。

1. アサーションとは何ですか?

アサーションは、コードの実行時に変数またはインターフェイスが特定の型に属しているかどうかを判断できる型検証メソッドです。通常、アサーションは、コンパイル後のコードの正確性をチェックし、エラーを早期に検出して解決するために使用されます。

Golang では、アサーションはキーワード「interface{}」を通じて実装されます。 Interface{} は、すべてのタイプのデータを受け入れることができる空のインターフェースを表します。空のインターフェイスは、型変換を使用して他の具象型に変換できます。

たとえば、次のコードはキーワード「interface{}」を使用してアサーションを実装します。

var i interface{} = "Hello"
s := i.(string)
fmt.Println(s)
ログイン後にコピー

この例では、空のインターフェース「interface{}」を使用して「Hello」を保存します。 " 弦。次に、アサーション「i.(string)」を使用して文字列型に変換します。最後に、「fmt.Println(s)」を使用して文字列「Hello」を出力します。

2. Golang の 3 つのアサーション メソッド

Golang では、型チェック ステートメント、型アサーション ステートメント、型判断ステートメントという 3 つのアサーション方法があります。 #型チェック文

    #
    value, isType := someVariable.(Type)
    ログイン後にコピー
  1. このうち、「value」は変換後の値を格納できる変数を表し、「isType」はBoolean型の変数で、変換が成功した場合はSetとなります。真実。
例:

var i interface{} = 55
s, ok := i.(string)
if ok {
  fmt.Printf("%q
", s)
} else {
  fmt.Printf("unexpected type %T
", i)
} 
ログイン後にコピー

この例では、変数 "i" は空のインターフェイスであり、整数型の値 "55" を格納します。アサーション「s, ok := i.(string)」で文字列型に変換し、変換後の値を変数「s」に格納し、変換結果を変数「ok」に格納します。次に、条件文「if ok」で変換結果を判定し、文字列型の場合は「55」という文字列を出力し、それ以外の場合は「予期しない型」を出力します。

2. 型アサーション ステートメント

value := someVariable.(Type)
ログイン後にコピー

型アサーション ステートメントは型チェック ステートメントと似ていますが、変換が成功したかどうかを示すブール値は返しません。型変換が失敗すると、プログラムがクラッシュし、パニック エラーが返されます。

例:

var i interface{} = 55
s := i.(string) // panic: interface conversion: interface is int, not string
ログイン後にコピー

この例では、変数 "i" は空のインターフェイスであり、整数型の値 "55" を格納します。文字列型に変換するつもりですが、型アサーションにより「インターフェイス変換: インターフェイスは int であり、string ではありません」というパニック エラーがスローされます。

3. 型判定ステートメント

switch someVariable.(type) {
case Type1:
    // someVariable 为Type1类型
case Type2:
    // someVariable 为Type2类型
default:
    // someVariable 不是Type1或Type2类型
}
ログイン後にコピー

型判定ステートメントは型チェック ステートメントと似ていますが、変換が成功したかどうかのブール値を返しません。 「switch someVariable.(type)」は型判定文を使用することで変数の型を判定し、型に応じて異なるコードブロックを実行することができます。

例:

var i interface{} = 55
switch i.(type) {
case int:
  fmt.Println("i is an int")
case string:
  fmt.Println("i is a string")
default:
  fmt.Printf("Unexpected type %T", i)
}
ログイン後にコピー
この例では、変数 "i" は空のインターフェイスであり、整数型の値を格納します。 「switch i.(type)」は型判定文を利用することで変数「i」の型を判定し、対応するコードブロックを実行することができます。 「i」は整数型であるため、コードは「i is an int」と出力します。

3. 結論

Golang では、アサーションは一般的に使用されるテクノロジです。これにより、プログラマは実行時に変数またはインターフェイスの型をチェックして、後で型エラーによって引き起こされる重大な結果を防ぐことができます。この記事では、Golang の 3 つのアサーション メソッド (型チェック ステートメント、型アサーション ステートメント、型判断ステートメント) を紹介します。各アサーション方法には固有の利点と制限があり、プログラマは実際のニーズに応じて適切な方法を選択できます。

以上がgolang アサーションの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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