L'éditeur PHP Zimo est là pour introduire un fragment de code commun : f = Foo(value). Ce code crée un objet Foo nommé f et transmet la valeur en tant que paramètre à son constructeur. De cette façon, nous pouvons utiliser l'objet Foo dans le programme, l'exploiter et le traiter. Un objet Foo peut être une instance d'une classe, qui peut avoir diverses propriétés et méthodes utilisées pour implémenter des fonctionnalités spécifiques. En créant un objet et en passant des paramètres, nous pouvons initialiser dynamiquement les propriétés de l'objet selon les besoins pour répondre aux exigences du programme. Il s'agit d'un extrait de code couramment utilisé qui peut être utilisé dans de nombreux scénarios de programmation différents.
J'ai trouvé l'implémentation de l'interfacedatabase/sql.Scanner
, mais je ne la comprends pas bien ?
Peut être compilé
La pièce que j'ai eue étaitFoo
是一个整数,它有方法Scan
Scan
方法返回error
,但是如何返回fmt.Errorf("无效的数据库类型:%T %v", value, value)
? N'est-ce pas un bug ou bien ?
*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
est la chaîne de format (votre message d'erreur).
ligne*f = Foo(value)
将int64
值转换为Foo
类型,并将其分配给方法接收者(注意f
est un pointeur).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!