In der Go-Sprache können Assertionen verwendet werden, um die Schnittstellenkonvertierung und Strukturkonvertierung abzuschließen. Die Schnittstellenkonvertierung umfasst Typzusicherungen und Wertzusicherungen, mit denen Werte von einem Schnittstellentyp in einen anderen Schnittstellentyp konvertiert werden. Mit der Strukturkonvertierung wird eine Struktur in eine andere umgewandelt.
Verwenden Sie Zusicherungen in Go, um die Konvertierung von Schnittstellen und Strukturen zu implementieren.
Eine Schnittstelle in Go ist eine Sammlung von Methoden, die es Werten mit unterschiedlichen zugrunde liegenden Typen ermöglicht, sie zu implementieren. Mit der Schnittstellenkonvertierung können Sie einen Wert von einem Schnittstellentyp in einen anderen Schnittstellentyp konvertieren.
Eine Struktur ist eine Sammlung zusammengehöriger Datenfelder. Manchmal möchten Sie vielleicht eine Struktur in eine andere umwandeln. Dies kann mithilfe von Behauptungen erfolgen.
Schnittstellenkonvertierung
Um einen Wert von einem Schnittstellentyp in einen anderen zu konvertieren, können Sie Assertionen verwenden. Behauptungen gibt es in zwei Formen:
Das folgende Beispiel zeigt, wie Typzusicherungen verwendet werden:
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()) } } }
Strukturkonvertierung
Um eine Struktur in eine andere zu konvertieren, können Sie Zusicherungen verwenden. Das folgende Beispiel zeigt, wie Behauptungen verwendet werden:
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) } }
Das obige ist der detaillierte Inhalt vonVerwenden Sie Golang, um Schnittstellen und Strukturen zu konvertieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!