Go でのインターフェイスのコンプライアンス コンパイル型チェック
Go では、インターフェイスは、型が実装する必要があるメソッドとプロパティのセットを指定するコントラクトを定義します。インターフェイスに準拠させるため。型が必要なメソッドとプロパティを実装していることを確認するために、コンパイラは型チェックを実行します。
提供されている Camlistore コード スニペットでは、CachingFetcher 型と DiskCache 型のゼロ値を StreamingFetcher と SeekFetcher に割り当てるステートメントが確認できます。それぞれのインターフェイス:
<code class="go">var ( _ blobref.StreamingFetcher = (*CachingFetcher)(nil) _ blobref.SeekFetcher = (*CachingFetcher)(nil) _ blobref.StreamingFetcher = (*DiskCache)(nil) _ blobref.SeekFetcher = (*DiskCache)(nil) )</code>
構文 (*T)(nil) は、型付き nil への変換を表します。ここで、T はインターフェイスの型です。このシナリオでは、CachingFetcher 型と DiskCache 型のゼロ値 (Go では nil) が StreamingFetcher インターフェイスと SeekFetcher インターフェイスを満たすことを意味します。
これらのステートメントの目的は、コンパイラーが CachingFetcher を確実に検証することです。 DiskCache は、StreamingFetcher インターフェイスと SeekFetcher インターフェイスで指定されたメソッドとプロパティを適切に実装します。これにより、これらのインターフェイスを使用するコードがこれらの型のインスタンスと正しく対話することが保証されます。
以上がGo はコンパイル時にインターフェイスのコンプライアンスをどのように確認しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。