Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengakses Medan Struktur Melalui Antara Muka dalam Go?

Bagaimanakah Saya Boleh Mengakses Medan Struktur Melalui Antara Muka dalam Go?

DDD
Lepaskan: 2024-11-29 16:27:10
asal
311 orang telah melayarinya

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

Mengakses Medan Antara Muka dalam Go

Apabila bekerja dengan antara muka dalam Go, adalah penting untuk memahami bahawa anda tidak boleh mengakses medan jenis asas secara langsung melalui antara muka. Pembolehubah antara muka boleh menyimpan sebarang nilai yang mematuhi antara muka, tetapi ia tidak memberikan akses terus kepada medan nilai.

Dalam coretan kod yang disediakan, fungsi SearchItemsByUser mengembalikan nilai antara muka{}. Untuk mengakses medan data, seperti Params, anda perlu menggunakan penegasan jenis untuk mengakses jenis struct tertentu di belakang antara muka.

Untuk melakukan ini, anda boleh mengubah suai kod seperti berikut:

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
}
Salin selepas log masuk

Kini, anda boleh menggunakan nilai yang dikembalikan secara langsung:

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

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Medan Struktur Melalui Antara Muka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan