PHP-Editor Zimo ist hier, um Ihnen ein gängiges Codefragment vorzustellen: f = Foo(value). Dieser Code erstellt ein Foo-Objekt mit dem Namen f und übergibt einen Wert als Parameter an seinen Konstruktor. Auf diese Weise können wir das Foo-Objekt im Programm verwenden und bedienen und verarbeiten. Ein Foo-Objekt kann eine Instanz einer Klasse sein, die über verschiedene Eigenschaften und Methoden verfügen kann, mit denen bestimmte Funktionen implementiert werden. Indem wir ein Objekt erstellen und Parameter übergeben, können wir die Eigenschaften des Objekts dynamisch nach Bedarf initialisieren, um die Anforderungen des Programms zu erfüllen. Dies ist ein häufig verwendetes Code-Snippet, das in vielen verschiedenen Programmierszenarien verwendet werden kann.
Ich habe die Implementierung der database/sql.Scanner
-Schnittstelle gefunden, verstehe sie aber nicht ganz?
Kann kompiliert werden
Der Teil, den ich bekommen habe, war Foo
是一个整数,它有方法 Scan
Scan
方法返回error
,但是如何返回fmt.Errorf("无效的数据库类型:%T %v", value, value)
? Ist das nicht ein Bug oder doch?
*f = Foo(value)
是做什么的?当您将此类型传递给 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 }
fmt.Errorf(format, args)
返回使用 errors.New(str)
创建的错误值,其中 str
ist die Formatzeichenfolge (Ihre Fehlermeldung).
Linie *f = Foo(value)
将 int64
值转换为 Foo
类型,并将其分配给方法接收者(注意 f
ist ein Zeiger).
Das obige ist der detaillierte Inhalt vonWas das bewirkt: *f = Foo(Wert). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!