ホームページ >バックエンド開発 >Golang >Go で値がインターフェイスを実装しているかどうかを確認するにはどうすればよいですか?

Go で値がインターフェイスを実装しているかどうかを確認するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-30 20:29:17264ブラウズ

How Can I Check if a Value Implements an Interface in Go?

Go でのインターフェイス実装の確認

Go では、インターフェイスを使用して、さまざまなデータ型に共通の動作を定義する方法が提供されます。ただし、値が特定のインターフェイスを実装しているかどうかを判断するのは難しい場合があります。

型アサーションと型スイッチ

値がインターフェイスを実装しているかどうかを確認する最も一般的な方法型アサーションを使用します:

_, ok := val.(Somether)

この型アサーションは、値 val を型に変換できるかどうかを検証します。何か。可能であれば、変換された値を _ に代入し、ok を true に設定します。それ以外の場合は、ok を false に設定します。

ただし、型アサーションは val がインターフェイスであることを前提としていますが、常にそうであるとは限りません。明示的な型チェックの場合、型切り替えメソッドを使用できます。

var _ Somether = (*MyType)(nil)

この例では、Somether 型の名前のない変数を宣言し、それを MyType 型の nil ポインタと等しく設定しています。この構文により、コンパイラは MyType が Somether を実装しているかどうかを検証し、実装していない場合はコンパイル エラーをトリガーします。

既知の型の単純さ

val の型がわかっている場合、コンパイラは Somether を実装しているかどうかを自動的にチェックします。上記の明示的なチェックは、型が不明な場合にのみ必要です。

以上がGo で値がインターフェイスを実装しているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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