Go でデータベースを操作するときに型変換を処理するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-07 14:15:03
オリジナル
693 人が閲覧しました

How to Handle Type Conversions When Working with Databases in Go?

Golang の型アサーション: データベースの型変換の処理

Go では、型アサーションを使用して、値をその値に基づいて別の型に変換できます。実際のタイプ。これは、動的タイプを操作する場合やカスタム インターフェイスを実装する場合に便利です。

文字列に基づいて、Role というカスタム タイプを作成し、それをデータベース ドライバーで使用するシナリオを考えてみましょう。これを行うには、Valuer インターフェイスと Scanner インターフェイスを実装する必要があります。

ただし、これらのインターフェイスの実装中に、次のエラーが発生する可能性があります。

cannot convert value.(string) (type string) to type *Role
ログイン後にコピー

スキャン関数の解決策:

スキャン機能は、データベースからデータを取得するときに使用します。この問題は、文字列型の値を *Role ポインターに直接変換しようとしているために発生します。代わりに、r ポインタを逆参照し、それに value の値を代入する必要があります。

func (r *Role) Scan(value interface{}) error {
    *r = Role(value.(string))
    return nil
}
ログイン後にコピー

Value 関数の解決策:

Value 関数は次のようになります。データベースにデータを挿入または更新するときに使用されます。間違った署名が以前に提供されました。正しい署名は次のとおりです:

func (r Role) Value() (driver.Value, error) {
    return string(r), nil
}
ログイン後にコピー

この関数は NULL 値を処理したり生成したりしないことに注意してください。

これらの修正に従うことで、次の場合にカスタム ロール タイプの型変換を正常に実装できます。データベースドライバーを使用します。

以上がGo でデータベースを操作するときに型変換を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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