首页 >后端开发 >Golang >Go中如何通过接口访问结构体字段?

Go中如何通过接口访问结构体字段?

DDD
DDD原创
2024-11-29 16:27:10310浏览

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

访问 Go 中的接口字段

在 Go 中使用接口时,重要的是要了解您无法通过以下方式直接访问底层类型的字段:一个接口。接口变量可以存储符合接口的任何值,但它不提供对值字段的直接访问。

在提供的代码片段中,SearchItemsByUser 函数返回一个 interface{} 值。要访问数据字段,例如 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