これは何をするか: *f = Foo(value)

PHPz
リリース: 2024-02-13 15:10:09
転載
651 人が閲覧しました

这是做什么的:*f = Foo(value)

php エディター Zimo では、一般的なコード フラグメント f = Foo(value) を紹介します。このコードは、f という名前の Foo オブジェクトを作成し、そのコンストラクターにパラメーターとして値を渡します。このようにしてプログラム内でFooオブジェクトを利用し、操作・処理を行うことができます。 Foo オブジェクトは、特定の機能を実装するために使用されるさまざまなプロパティやメソッドを持つクラスのインスタンスである場合があります。オブジェクトを作成してパラメータを渡すことにより、プログラムの要件を満たすために必要に応じてオブジェクトのプロパティを動的に初期化できます。これは、さまざまなプログラミング シナリオで使用できる一般的に使用されるコード スニペットです。

質問内容

database/sql.Scannerインターフェイスの実装を見つけましたが、よくわかりません。

コンパイル可能

私が取得した部分は、Foo は整数であり、メソッド Scan

を持っています。
  1. Scan メソッドは error を返しますが、fmt.Errorf("無効なデータベース タイプ: %T %v", value, value)# を返す方法##?これはバグではないのでしょうか?

  2. *f = Foo(値) これは何をするのでしょうか?この型を rows.Scan() に渡すと、Foo.Scan() が呼び出されますか?型が int64 であることが予期される場合、それ自体が Foo(value)? と呼ばれます。

  3. ###コード###
    type Foo int
    
    // Scan implements the database/sql.Scanner interface
    func (f *Foo) Scan(value interface{}) error {
        switch value := value.(type) {
        case int64:
            *f = Foo(value)
        default:
            return fmt.Errorf("Invalid database type: %T %v", value, value)
        }
        return nil
    }
    ログイン後にコピー

解決策

    fmt.Errorf(format, args)
  1. errors.New(str) を使用して作成されたエラー値を返します。ここで、str は形式です文字列 (エラー メッセージ)。

  2. *f = Foo(value)
  3. int64 値を Foo 型に変換し、メソッド レシーバーに割り当てます (注 f はポインタです)。

以上がこれは何をするか: *f = Foo(value)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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