データベース ドライバー互換性のための Golang 型アサーション
この例では、Role という名前の型が文字列型の型エイリアスとして定義されています。目標は、データベース ドライバーと連携するように Valuer インターフェイスと Scanner インターフェイスを実装することです。ただし、Scan メソッドでの型変換により、コンパイル中にエラーが発生します。
具体的には、コードは、変換された文字列値を Role 型のポインター r に割り当てようとします。ただし、この場合に型アサーションを実行する正しい方法は、代入構文 r = Role(value.(string))* を使用することです。これにより、変換された値が間接参照された Role 変数に直接割り当てられます。
さらに、driver.Valuer の Value メソッド シグネチャはコードで定義されているものではありません。 func (r role) Value() (driver.Value, error) である必要があります。このメソッドは、Role 値の文字列表現を返します。
次に、Scan メソッドと Value メソッドの修正例を示します。
func (r *Role) Scan(value interface{}) error { *r = Role(value.(string)) return nil } func (r Role) Value() (driver.Value, error) { return string(r), nil }
これらの調整を行うことで、コードは正常にコンパイルされ、データベースドライバーで使用されるロールタイプ。
以上がGolang でデータベース ドライバーの互換性のために型アサーションを正しく実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。