>백엔드 개발 >Golang >Go의 인터페이스를 통해 구조체 필드에 어떻게 액세스할 수 있나요?

Go의 인터페이스를 통해 구조체 필드에 어떻게 액세스할 수 있나요?

DDD
DDD원래의
2024-11-29 16:27:10330검색

How Can I Access Struct Fields Through an Interface in Go?

Go에서 인터페이스 필드 액세스

Go에서 인터페이스로 작업할 때 다음을 통해 기본 유형의 필드에 직접 액세스할 수 없다는 점을 이해하는 것이 중요합니다. 인터페이스. 인터페이스 변수는 인터페이스를 준수하는 모든 값을 저장할 수 있지만 값의 필드에 대한 직접적인 액세스를 제공하지는 않습니다.

제공된 코드 조각에서 SearchItemsByUser 함수는 인터페이스{} 값을 반환합니다. Params와 같은 데이터 필드에 액세스하려면 유형 어설션을 사용하여 인터페이스 뒤의 특정 구조체 유형에 액세스해야 합니다.

이를 위해 다음과 같이 코드를 수정할 수 있습니다.

package search

type results struct {
    Hits             hits
    NbHits           int
    NbPages          int
    HitsPerPage      int
    ProcessingTimeMS int
    Query            string
    Params           string
}

func SearchItemsByUser(r *http.Request) results {
    var Result results

    er := json.Unmarshal(body, &Result)
    if er != nil {
        fmt.Println("error:", er)
    }
    return Result
}

이제 반환된 값을 직접 사용할 수 있습니다.

func test(w http.ResponseWriter, r *http.Request) {

    result := search.SearchItemsByUser(r)
    fmt.Fprintf(w, "%s", result.Params)
}

위 내용은 Go의 인터페이스를 통해 구조체 필드에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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