Go의 동적 반환 유형: 제네릭 및 유형 어설션 사용
동적 반환 유형은 일반적으로 프로그래밍 언어에서 다양한 유형의 값을 반환하는 데 사용됩니다. . Go에서는 함수의 반환 유형이 고정되어 있으므로 이것이 직접적으로 가능하지 않습니다. 그러나 유사한 기능을 달성할 수 있는 해결 방법이 있습니다.
한 가지 접근 방식은 인터페이스{}와 같은 일반 반환 유형을 사용하는 것입니다. 이 유형은 모든 유형의 값을 보유할 수 있으므로 함수가 다양한 유형의 값을 반환할 수 있습니다. 그러나 이 접근 방식에서는 컴파일러가 컴파일 시간에 실제 유형을 결정할 수 없기 때문에 반환된 값을 안전하게 사용하기 위해 유형 어설션이 필요합니다.
func ReturnModels(modelName string) interface{} { // Get models from the database if modelName == "brands" { return []Brand{ {Name: "Gucci"}, {Name: "LV"}, } } else if modelName == "posts" { return []Post{ {Author: "J.K.R.", Content: "Whatever"}, } } return nil } func main() { result := ReturnModels("brands") if brands, ok := result.([]Brand); ok { fmt.Printf("List of Brands: %v\n", brands) } result = ReturnModels("posts") if posts, ok := result.([]Post); ok { fmt.Printf("List of Posts: %v", posts) } }
이 예시에서 ReturnModels 함수는 인터페이스{} 값을 반환합니다. 기본 함수는 반환된 값의 실제 유형을 검색하기 위해 유형 어설션을 수행합니다. 유형 어설션이 성공하면 반환된 값을 예상대로 사용할 수 있습니다.
이 접근 방식을 사용하면 유형 안전성을 유지하면서 Go에서 동적 반환 유형을 사용할 수 있습니다. 그러나 유형 어설션의 오버헤드가 발생하고 유형 어설션이 성공했는지 확인하기 위해 추가 오류 처리가 필요할 수 있습니다.
위 내용은 Go에서는 제네릭과 유형 어설션을 사용하여 어떻게 동적 반환 유형을 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!