ホームページ  >  記事  >  バックエンド開発  >  これは何をするか: *f = Foo(value)

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

PHPz
PHPz転載
2024-02-13 15:10:09676ブラウズ

这是做什么的:*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 までご連絡ください。