php エディター Zimo では、一般的なコード フラグメント f = Foo(value) を紹介します。このコードは、f という名前の Foo オブジェクトを作成し、そのコンストラクターにパラメーターとして値を渡します。このようにしてプログラム内でFooオブジェクトを利用し、操作・処理を行うことができます。 Foo オブジェクトは、特定の機能を実装するために使用されるさまざまなプロパティやメソッドを持つクラスのインスタンスである場合があります。オブジェクトを作成してパラメータを渡すことにより、プログラムの要件を満たすために必要に応じてオブジェクトのプロパティを動的に初期化できます。これは、さまざまなプログラミング シナリオで使用できる一般的に使用されるコード スニペットです。
database/sql.Scanner
インターフェイスの実装を見つけましたが、よくわかりません。
コンパイル可能
私が取得した部分は、Foo
は整数であり、メソッド Scan
Scan
メソッドは error
を返しますが、fmt.Errorf("無効なデータベース タイプ: %T %v", value, value)# を返す方法##?これはバグではないのでしょうか?
*f = Foo(値) これは何をするのでしょうか?この型を
rows.Scan() に渡すと、
Foo.Scan() が呼び出されますか?型が
int64 であることが予期される場合、それ自体が
Foo(value)?
と呼ばれます。
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 }
errors.New(str) を使用して作成されたエラー値を返します。ここで、
str は形式です文字列 (エラー メッセージ)。
int64 値を
Foo 型に変換し、メソッド レシーバーに割り当てます (注
f はポインタです)。
以上がこれは何をするか: *f = Foo(value)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。