interfaces et méthodes golang
Interfaces et méthodes Golang
Golang (ou Go) est un langage de programmation open source développé par Google. Il offre une expérience de programmation efficace grâce à son modèle de concurrence unique et son garbage collector. Les interfaces et les méthodes de Golang sont l'un de ses concepts fondamentaux et sont très importantes pour maîtriser le langage de programmation Golang.
Interfaces en Golang
Les interfaces sont un moyen d'obtenir le polymorphisme. Elles définissent un ensemble de spécifications pour le code du programme. Dans le langage Go, elles sont appelées types d'interface. Ils définissent un ensemble de méthodes mais ne fournissent pas d'implémentations. Même sans déclarer explicitement un type d'interface spécifique, un programme Go peut toujours vérifier si un type répond aux exigences d'une interface spécifique.
Dans Golang, les interfaces sont très importantes. Si vous souhaitez utiliser Golang, vous devez comprendre la définition et la mise en œuvre des interfaces Golang. Voici quelques exemples de définitions d'interface Golang :
package main import "fmt" type Interface1 interface { method1() string } type Interface2 interface { method2() int } type Interface3 interface { Interface1 Interface2 method3() bool } type Struct1 struct { name string } type Struct2 struct { age int } func (s1 *Struct1) method1() string { return s1.name } func (s2 *Struct2) method2() int { return s2.age } func (s3 *Struct1) method3() bool { return true } func main() { s1 := Struct1{name: "John"} s2 := Struct2{age: 30} var iInterface1 Interface1 = &s1 var iInterface2 Interface2 = &s2 var iInterface3 Interface3 = &s3 fmt.Println(iInterface1.method1()) fmt.Println(iInterface2.method2()) fmt.Println(iInterface3.method3()) }
Dans cet exemple, nous définissons 3 interfaces, à savoir le code Interface1
, Interface2
et Interface3
>. Parmi eux, Interface3
hérite de Interface1
et Interface2
. Nous avons également défini deux structures Struct1
et Struct2
et implémenté les méthodes des interfaces correspondantes pour celles-ci. Dans la fonction main()
, nous utilisons ces interfaces pour appeler leurs méthodes. Interface1
, Interface2
和 Interface3
。其中 Interface3
继承了 Interface1
和 Interface2
。我们还定义了两个结构体 Struct1
和 Struct2
,并为它们实现了对应接口的方法。在 main()
函数中,我们使用这些接口调用它们的方法。
Golang 中的方法
方法是与特定类型相关联的函数,可以访问该类型的数据。在 Golang 中,方法是将函数限定在特定类型中的一种方式。它们可以用来表示一个类型的行为,这种行为可以被其他对象调用。方法可以是值方法,也可以是指针方法,这取决于它们是否修改了接收器的值。
以下是 Golang 中方法定义的示例:
package main import "fmt" type Struct1 struct { name string } func (s1 Struct1) method1() string { return s1.name } func (s1 *Struct1) method2() { s1.name = "Jane" } func main() { s1 := Struct1{name: "John"} fmt.Println(s1.method1()) s1.method2() fmt.Println(s1.method1()) }
在这个示例中,我们定义了一个 Struct1
的类型,并为其定义了两个方法 method1()
和 method2()
。注意 method2()
的接收器是一个指向结构体的指针,因此它可以修改结构体的值。在 main()
函数中,我们创建了一个 Struct1
对象,并分别调用了这两个方法。
接口的嵌套和类型断言
在 Golang 中,接口也可以像结构体一样嵌套。接口的嵌套可以用来组合多个接口的能力。Golang 还提供了类型断言操作符,用于将接口转换为其他类型的值。
以下是一个 Golang 接口的嵌套和类型断言的示例:
package main import "fmt" type Interface1 interface { method1() string } type Interface2 interface { method2() int } type Struct1 struct { name string } func (s1 *Struct1) method1() string { return s1.name } func (s1 *Struct1) method2() int { return len(s1.name) } func main() { s1 := Struct1{name: "John"} var iInterface1 Interface1 = &s1 var iInterface2 Interface2 = iInterface1.(Interface2) fmt.Println(iInterface2.method2()) }
在这个示例中,我们定义了 Interface1
和 Interface2
接口,并为 Struct1
结构体实现了两个方法 method1()
和 method2()
。在 main()
函数中,我们将一个 Struct1
对象强制转换为 Interface1
接口,并将其再次强制转换为 Interface2
接口。然后我们调用它的 method2()
Struct1
et deux méthodes method1() code> et <code> méthode2()
. Notez que le récepteur de method2()
est un pointeur vers une structure, il peut donc modifier la valeur de la structure. Dans la fonction main()
, nous créons un objet Struct1
et appelons respectivement ces deux méthodes. 🎜🎜Imbrication d'interface et assertion de type🎜🎜Dans Golang, les interfaces peuvent également être imbriquées comme des structures. L'imbrication d'interfaces peut être utilisée pour combiner les capacités de plusieurs interfaces. Golang fournit également des opérateurs d'assertion de type pour convertir les interfaces en valeurs d'autres types. 🎜🎜Ce qui suit est un exemple d'imbrication et d'assertion de type des interfaces Golang : 🎜rrreee🎜Dans cet exemple, nous définissons les interfaces Interface1
et Interface2
et fournissons La structure Struct1
implémente deux méthodes method1()
et method2()
. Dans la fonction main()
, nous convertissons un objet Struct1
en interface Interface1
et le convertissons à nouveau en Interface2
interface. Ensuite, nous appelons sa méthode method2()
et imprimons le résultat. 🎜🎜Résumé🎜🎜Dans Golang, les interfaces et les méthodes sont l'un des concepts les plus importants. Ils offrent une expérience de programmation plus efficace dans Golang. En utilisant des interfaces, nous pouvons exprimer un comportement abstrait indépendant du type. En utilisant également des méthodes, nous pouvons limiter les fonctions à des types spécifiques et travailler avec diverses données et types de données de manière plus directe. Par conséquent, comprendre les concepts d’interfaces et de méthodes est une base importante pour la programmation Golang. 🎜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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article explique les mécanismes d'importation des packages de Go: les importations nommées (par exemple, importation & quot; fmt & quot;) et les importations vierges (par exemple, importation _ & quot; fmt & quot;). Les importations nommées rendent le contenu du package accessible, tandis que les importations vierges ne font que l'exécuter t

Cet article explique la fonction Newflash () de Beego pour le transfert de données inter-pages dans les applications Web. Il se concentre sur l'utilisation de NewFlash () pour afficher les messages temporaires (succès, erreur, avertissement) entre les contrôleurs, en tirant parti du mécanisme de session. Limiter

Cet article détaille la conversion efficace de la requête MySQL Resulte en tranches de structure GO. Il met l'accent sur l'utilisation de la méthode de numérisation de la base de données / SQL pour des performances optimales, en évitant l'analyse manuelle. Meilleures pratiques pour la cartographie des champs struct à l'aide de balises DB et de robus

Cet article montre la création de simulations et de talons dans GO pour les tests unitaires. Il met l'accent sur l'utilisation des interfaces, fournit des exemples d'implémentations simulées et discute des meilleures pratiques telles que la tenue de simulations concentrées et l'utilisation de bibliothèques d'assertion. L'articl

Cet article explore les contraintes de type personnalisé de Go pour les génériques. Il détaille comment les interfaces définissent les exigences de type minimum pour les fonctions génériques, améliorant la sécurité du type et la réutilisabilité du code. L'article discute également des limitations et des meilleures pratiques

Cet article détaille la rédaction de fichiers efficace dans GO, en comparant OS.WriteFile (adapté aux petits fichiers) avec OS.OpenFile et Buffered Writes (optimal pour les fichiers volumineux). Il met l'accent sur la gestion robuste des erreurs, l'utilisation de différer et la vérification des erreurs spécifiques.

L'article traite des tests d'unité d'écriture dans GO, couvrant les meilleures pratiques, des techniques de moquerie et des outils pour une gestion efficace des tests.

Cet article explore l'utilisation d'outils de traçage pour analyser le flux d'exécution des applications GO. Il traite des techniques d'instrumentation manuelles et automatiques, de comparaison d'outils comme Jaeger, Zipkin et OpenTelelemetry, et mettant en évidence une visualisation efficace des données
