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 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 :
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!