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'interface database/sql.Scanner
, mais je ne la comprends pas bien ?
Peut être compilé
La pièce que j'ai eue était Foo
是一个整数,它有方法 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!