>백엔드 개발 >Golang >인터페이스{}에서 변환한 후 map[string]*Book을 안전하게 반복하는 방법은 무엇입니까?

인터페이스{}에서 변환한 후 map[string]*Book을 안전하게 반복하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-01 11:53:11588검색

How to Safely Iterate Over a map[string]*Book After Converting from interface{}?

반복을 통해 인터페이스{}를 지도로 변환

코드에서 인터페이스{}를 지도로 변환하는 동안 오류가 발생합니다. . 이 문제를 해결하고 맵 요소에 대한 반복을 활성화하려면 다음 단계를 따르세요.

어설션 사용:

에 설명된 대로 리플렉션 기반 접근 방식을 직접 유형 어설션으로 바꿉니다. 아래 코드는 다음과 같습니다.

func process(in interface{}, isSlice bool, isMap bool) {
    if isMap {
        v := in.(map[string]*Book)
        fmt.Printf("Type: %v\n", v)
        for _, s := range v {
            fmt.Printf("Value: %v\n", s)
        }
    }
}

이 어설션은 인터페이스{} 값을 map[string]*Book 유형의 변수에 할당합니다. 조건이 충족되면. 이 접근 방식은 더 효율적이며 리플렉션이 필요하지 않습니다.

또는 switch 문을 사용하여 리플렉션을 사용하지 않고 다양한 유형의 입력을 처리할 수 있습니다.

리플렉션과 함께 사용자 정의 맵 키 사용( 선택 사항):

그래도 리플렉션을 사용해야 하는 경우 반복하는 대신 Value.MapKeys를 사용하여 맵 키를 검색할 수 있습니다. 값 바로 위에 있습니다. 이 접근 방식에 대한 자세한 내용은 제공된 솔루션에 언급된 스택 오버플로 답변을 참조하세요.

위 내용은 인터페이스{}에서 변환한 후 map[string]*Book을 안전하게 반복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.