Go 언어에서는 어설션을 사용하여 인터페이스 변환과 구조 변환을 완료할 수 있습니다. 인터페이스 변환에는 하나의 인터페이스 유형에서 다른 인터페이스 유형으로 값을 변환하는 데 사용되는 유형 주장과 값 주장이 포함됩니다. 구조 변환은 한 구조를 다른 구조로 변환하는 데 사용됩니다.
Go에서 어설션을 사용하여 인터페이스 및 구조 변환 구현
Go의 인터페이스는 다양한 기본 유형의 값을 구현하도록 허용하는 메서드 모음입니다. 인터페이스 변환을 사용하면 한 인터페이스 유형의 값을 다른 인터페이스 유형으로 변환할 수 있습니다.
구조는 관련 데이터 필드의 모음입니다. 때로는 한 구조를 다른 구조로 변환하고 싶을 수도 있습니다. 이는 어설션을 사용하여 수행할 수 있습니다.
인터페이스 변환
한 인터페이스 유형에서 다른 인터페이스 유형으로 값을 변환하려면 어설션을 사용할 수 있습니다. 어설션은 두 가지 형식으로 제공됩니다.
다음 예에서는 유형 어설션을 사용하는 방법을 보여줍니다.
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()) } } }
구조 변환
한 구조를 다른 구조로 변환하려면 어설션을 사용할 수 있습니다. 다음 예에서는 어설션을 사용하는 방법을 보여줍니다.
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) } }
위 내용은 golang을 사용하여 인터페이스 및 구조 변환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!