首頁 > 後端開發 > Golang > Go中如何透過介面存取結構體欄位?

Go中如何透過介面存取結構體欄位?

DDD
發布: 2024-11-29 16:27:10
原創
308 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板