Maison > développement back-end > Golang > Méthode d'utilisation de l'assertion de type de méthode de fonction Golang

Méthode d'utilisation de l'assertion de type de méthode de fonction Golang

WBOY
Libérer: 2023-05-16 11:01:44
original
1017 Les gens l'ont consulté

Golang est un langage de programmation efficace et actuellement très populaire en raison de sa simplicité, de son efficacité et de sa fiabilité. Les assertions de types de fonctions et de méthodes dans Golang sont l'un des outils importants couramment utilisés par les programmeurs avancés. À travers cet article, nous approfondirons l'utilisation des assertions de type de méthode pour les fonctions Golang.

  1. Introduction à l'assertion de type de méthode

Dans Golang, l'assertion de type de méthode est la conversion de type entre le pointeur et la valeur. En utilisant la notation par points pour appeler des méthodes, Golang fait quelque chose en coulisse. Lorsque vous appelez une méthode, vous transmettez en fait le récepteur (pour les valeurs et les pointeurs) à la méthode. À l'aide d'assertions de type de méthode, nous pouvons librement convertir entre les valeurs et les pointeurs.

Par exemple :

type MyType struct {
    field int
}

func (mt MyType) sayHi() {
    fmt.Println("Hi from MyType with field:", mt.field)
}

func (mt *MyType) sayBye() {
    fmt.Println("Bye from MyType with field:", mt.field)
}

mt := &MyType{field: 42}
mt.sayHi() // Hi from MyType with field: 42

var i interface{} = mt
i.(MyType).sayHi() // Hi from MyType with field: 42

i.(MyType).sayBye() // 运行时error:invalid type assertion: i.(MyType) (non-interface type *interface {} on left)
Copier après la connexion
  1. Type de pointeur et type de valeur

En Golang, une structure peut être un type de valeur ou un type de pointeur. Une structure de type pointeur peut changer d’état dans une méthode, alors qu’une structure de type valeur ne change pas d’état.

Type de pointeur MyType:

type MyType struct {
    field int
}

func (mt *MyType) sayHi() {
    fmt.Println("Hi from MyType with field:", mt.field)
}

mt := &MyType{field: 42}
mt.sayHi() // Hi from MyType with field: 42
Copier après la connexion

Type de valeur MyType:

type MyType struct {
    field int
}

func (mt MyType) sayHi() {
    fmt.Println("Hi from MyType with field:", mt.field)
}

mt := MyType{field: 42}
mt.sayHi() // Hi from MyType with field: 42
Copier après la connexion
  1. Utilisation de l'assertion de type de méthode

Dans Golang, l'assertion de type de méthode peut nous aider à maîtriser la conversion entre les types de pointeur et les types de valeur. Dans l'exemple suivant, nous montrons comment utiliser les assertions de type de méthode.

type MyType struct {
    field int
}

func (mt MyType) sayHi() {
    fmt.Println("Hi from MyType with field:", mt.field)
}

func (mt *MyType) sayBye() {
    fmt.Println("Bye from MyType with field:", mt.field)
}

func main() {
    mt := &MyType{field: 42}
    mt.sayHi() // Hi from MyType with field: 42

    // 方法类型断言:值类型转换成指针类型
    var imt interface{} = MyType{field: 24}
    p, ok := imt.(*MyType) // ok 变量用于检查类型断言是否成功
    if ok {
        p.sayHi() // Hi from MyType with field: 24
    } else {
        fmt.Println("assertion failed")
    }

    // 方法类型断言:指针类型转换成值类型
    imt = mt
    v, ok := imt.(MyType) // ok 变量用于检查类型断言是否成功
    if ok {
        v.sayHi() // Hi from MyType with field: 42
    } else {
        fmt.Println("assertion failed")
    }
}
Copier après la connexion

L'utilisation d'assertions de type de méthode simplifie le processus de programmation en nous donnant la liberté de convertir entre les valeurs et les pointeurs.

  1. Résumé

Dans Golang, l'assertion de type de méthode est l'un des outils importants couramment utilisés par les programmeurs avancés. Avec les assertions de type de méthode, nous pouvons librement convertir entre les valeurs et les pointeurs, simplifiant ainsi le processus de programmation. Cet article détaille la différence entre les types de pointeur et les types de valeur, ainsi que la manière d'utiliser les assertions de type de méthode. Pour les débutants, les assertions de type de méthode peuvent être un peu compliquées, mais à mesure que vous gagnerez en expérience, la compréhension et la maîtrise des assertions de type de méthode seront très utiles.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal