Maison  >  Article  >  développement back-end  >  Explication détaillée de l'interface et du contrôle d'accès des fonctions Golang

Explication détaillée de l'interface et du contrôle d'accès des fonctions Golang

WBOY
WBOYoriginal
2023-05-16 16:51:171468parcourir

Golang est largement apprécié par les développeurs comme langage de programmation rapide et efficace. Dans Golang, les fonctions sont un composant très important. Les fonctions peuvent être publiques ou privées. Dans cet article, nous approfondirons l'interface et le contrôle d'accès des fonctions Golang afin de mieux comprendre le modèle de développement et les meilleures pratiques de Golang.

1. Interface

Dans Golang, l'interface est un concept très important. Une interface est un type abstrait constitué d’un ensemble de signatures de méthodes. Ces méthodes peuvent être implémentées par n'importe quel type, et les objets de ces types d'implémentation peuvent être transmis et manipulés à l'aide de types d'interface. En fait, les interfaces sont largement utilisées dans Golang, telles que la programmation réseau, la programmation de bases de données, etc., ce qui peut améliorer la réutilisabilité, la lisibilité et la maintenabilité du code.

Voici un exemple simple d'interface Golang :

type Animal interface {
    Speak() string
}

type Dog struct {
    name string
}

func (d Dog) Speak() string {
    return "Woof!"
}

type Cat struct {
    name string
}

func (c Cat) Speak() string {
    return "Meow..."
}

func main() {
    animals := []Animal{Dog{"Fido"}, Cat{"Mimi"}}
    for _, animal := range animals {
        fmt.Println(animal.Speak())
    }
}

Dans l'exemple ci-dessus, nous avons défini une interface Animal, qui contient uniquement une chaîne de signature de méthode Speak(). Les structures Dog et Cat implémentent cette interface. Nous stockons respectivement les instances de types Chien et Chat dans une tranche de type Animal, puis parcourons et appelons la méthode Speak() une par une. Il n'est pas difficile de voir que l'interface de cet exemple peut implicitement convertir l'instance de structure en type Animal pour le transfert et l'exploitation.

Pourquoi les interfaces sont-elles si importantes dans Golang ? Golang étant un langage typé statiquement, cela signifie que le type de données d'une variable est déterminé au moment de la compilation. Dans ce cas, comment parvenir à une réutilisation et une expansion flexibles du code ? L'interface nous offre une solution élégante et efficace. En définissant une interface, nous pouvons résumer des types similaires en un type abstrait, puis transmettre et exploiter des objets du type d'implémentation via l'implémentation de l'interface.

2. Contrôle d'accès

À Golang, le contrôle d'accès est très important. Le contrôle d'accès fait référence à la restriction de l'accès à certains membres ou méthodes pour garantir la sécurité et la conformité du code. Le contrôle d'accès dans Golang est principalement implémenté via la nature publique ou privée des variables, fonctions, structures et méthodes. Les parties publiques sont accessibles par d'autres packages, tandis que les parties privées ne sont accessibles que dans le package actuel.

Ce qui suit est un exemple simple de contrôle d'accès Golang :

package main

import (
    "fmt"
)

type Person struct {
    name string
    age  int
}

func (p Person) GetName() string {
    return p.name
}

func (p *Person) SetName(name string) {
    p.name = name
}

func NewPerson(name string, age int) *Person {
    return &Person{name: name, age: age}
}

func main() {
    p := NewPerson("Mike", 30)
    fmt.Println(p.GetName())

    // Cannot assign to p.name (unexported field)
    // p.name = "John" 

    p.SetName("John")
    fmt.Println(p.GetName())
}

Dans l'exemple ci-dessus, nous avons défini une structure Person, comprenant deux champs privés de nom et d'âge et deux méthodes publiques de GetName() et SetName(). Dans la fonction NewPerson(), nous instancions une instance du type Person et renvoyons un pointeur vers l'instance. Dans la fonction principale, nous appelons la méthode GetName() pour obtenir l'attribut name de l'instance de type Person, puis appelons la méthode SetName() pour modifier l'attribut. A noter que l'attribut name étant privé, on ne peut pas le modifier directement dans la fonction main. Si vous essayez de le modifier, une erreur de compilation se produira.

Résumé

Dans Golang, les interfaces et le contrôle d'accès sont des concepts très importants. Les interfaces peuvent nous aider à réaliser la réutilisation et l’extension du code, améliorant ainsi la lisibilité et la maintenabilité du code. Le contrôle d'accès peut nous aider à garantir la sécurité et la conformité du code et à réduire le couplage du code. Lorsque vous écrivez du code Golang, vous devez vous concentrer sur l'utilisation et les meilleures pratiques des interfaces et du contrôle d'accès.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn