Maison  >  Article  >  développement back-end  >  Utilisez Golang pour convertir des interfaces et des structures

Utilisez Golang pour convertir des interfaces et des structures

WBOY
WBOYoriginal
2024-04-08 10:30:011049parcourir

En langage Go, les assertions peuvent être utilisées pour compléter la conversion d'interface et la conversion de structure. La conversion d'interface comprend les assertions de type et les assertions de valeur, qui sont utilisées pour convertir les valeurs d'un type d'interface en un autre type d'interface. La conversion de structure est utilisée pour convertir une structure en une autre structure.

Utilisez Golang pour convertir des interfaces et des structures

Utilisez des assertions dans Go pour implémenter la conversion d'interfaces et de structures

Une interface dans Go est un ensemble de méthodes qui permettent à des valeurs avec différents types sous-jacents de les implémenter. La conversion d'interface vous permet de convertir une valeur d'un type d'interface vers un autre type d'interface.

Une structure est une collection de champs de données associés. Parfois, vous souhaiterez peut-être convertir une structure en une autre. Cela peut être fait à l’aide d’assertions.

Conversion d'interface

Pour convertir une valeur d'un type d'interface à un autre, vous pouvez utiliser des assertions. Les assertions se présentent sous deux formes :

  • Assertion de type : Cette assertion vérifie si une valeur implémente un type d'interface spécifique.
  • Assertion de valeur : cette assertion convertit une valeur en un type d'interface spécifique même si elle n'implémente pas cette interface.

L'exemple suivant montre comment utiliser les assertions de type :

package main

import "fmt"

type Animal interface {
    Speak() string
}

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

type Cat struct {}
func (c Cat) Speak() string { return "Meow!"}

func main() {
    var animals []Animal
    animals = append(animals, Dog{}, Cat{})

    for _, animal := range animals {
        if dog, ok := animal.(Dog); ok {
            fmt.Println("Dog says:", dog.Speak())
        } else if cat, ok := animal.(Cat); ok {
            fmt.Println("Cat says:", cat.Speak())
        }
    }
}

Conversion de structure

Pour convertir une structure en une autre, vous pouvez utiliser des assertions. L'exemple suivant montre comment utiliser les assertions :

package main

import "fmt"

type User struct {
    Name string
}

type Employee struct {
    User
    Salary int
}

func main() {
    user := User{"Alice"}
    employee := Employee{User{"Bob"}, 1000}

    // 使用断言将 User 转换为 Employee
    if employee, ok := user.(Employee); ok {
        fmt.Println("Employee:", employee.Name, employee.Salary)
    }

    // 使用断言将 Employee 转换为 User
    if user, ok := employee.User.(User); ok {
        fmt.Println("User:", user.Name)
    }
}

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