ホームページ >バックエンド開発 >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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。