Maison  >  Article  >  développement back-end  >  Analyse du problème de ne pas pouvoir obtenir l'adresse en golang

Analyse du problème de ne pas pouvoir obtenir l'adresse en golang

王林
王林original
2019-12-24 16:46:123657parcourir

Analyse du problème de ne pas pouvoir obtenir l'adresse en golang

L'exemple de code est le suivant :

func main() {
    var a Integer = 1
    var b Integer = 1
    sum := a.Add(b)
    fmt.Println(sum)

    var i interface{} = a
    sum = i.(Integer).Add(b) // 报错
    fmt.Println(sum)
}

type Integer int

func (a *Integer) Add(b Integer) Integer {
    return  *a + b
}

Le message d'erreur est le suivant :

test\testVar.go:16:19: cannot call pointer method on i.(Integer)
test\testVar.go:16:19: cannot take the address of i.(Integer)

Cette situation se produit car la méthode Add nécessite un type de pointeur entier Le récepteur, et le i.(Integer) que nous avons passé est une valeur, et cette valeur n'est affectée à aucune variable, donc le symbole "&" ne peut pas obtenir l'adresse.

La bonne méthode consiste à attribuer i.(Integer) à une variable ou à changer le récepteur de méthode en un type normal.

Les exemples de code sont les suivants :

   var i interface{} = a
    c := i.(Integer)
    sum = c.Add(b)
    fmt.Println(sum)

ou

func (a Integer) Add(b Integer) Integer {    
return  a + b
}

Articles et tutoriels connexes recommandés : tutoriel 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!

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