Bagaimanakah Anda Boleh Menyesuaikan Fungsi untuk Melaksanakan Antara Muka dalam Go?

Linda Hamilton
Lepaskan: 2024-11-07 06:24:02
asal
292 orang telah melayarinya

How Can You Adapt a Function to Implement an Interface in Go?

Fungsi Melaksanakan Antara Muka

Dalam Go, antara muka mentakrifkan satu set kaedah yang mesti dilaksanakan oleh jenis. Jenis melaksanakan antara muka jika ia menyediakan semua kaedah yang diisytiharkan oleh antara muka.

Contoh 1: Melaksanakan Antara Muka Secara Terus

Kod berikut mentakrifkan antara muka Pengendali dan jenis yang melaksanakannya:

type Handler interface {
    ServeHTTP(*Conn, *Request)
}

type Counter int

func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) {
    fmt.Fprintf(c, "counter = %d\n", ctr)
    ctr++
}
Salin selepas log masuk

Di sini, jenis Counter mempunyai kaedah ServeHTTP yang mengambil hujah yang diperlukan oleh antara muka Pengendali. Oleh itu, Counter melaksanakan antara muka Pengendali.

Contoh 2: Melaksanakan Antara Muka dengan Fungsi

Dalam contoh ini, fungsi yang dipanggil notFound bukanlah jenis Pengendali yang sah kerana ia tidak mempunyai kaedah yang diperlukan:

func notFound(c *Conn, req *Request) {
    // Not a valid Handler
}
Salin selepas log masuk

Untuk menjadikan notFound melaksanakan antara muka Pengendali, ia perlu "diselesaikan" ke dalam bentuk berikut:

// Define a type that implements ServeHTTP
type HandlerFunc func(*Conn, *Request)

func (f HandlerFunc) ServeHTTP(c *Conn, req *Request) {
    f(c, req) // Function call with arguments
}

// Convert function to implement the interface
var Handle404 = HandlerFunc(notFound)
Salin selepas log masuk

Di sini, HandlerFunc ialah jenis yang mengambil dua hujah dan tidak mengembalikan apa-apa. Dengan membalut notFound dalam HandlerFunc dan memberikannya kepada pembolehubah, notFound menjadi jenis Pengendali yang sah.

Penjelasan

Konsep utama di sini ialah pembolehubah Handle404 boleh digunakan sebagai Pengendali walaupun ia sebenarnya fungsi. Ini kerana jenis HandlerFunc melaksanakan kaedah ServeHTTP untuk fungsi tersebut. Apabila anda memanggil Handle404.ServeHTTP, ia sebenarnya memanggil fungsi notFound.

Pendekatan ini membenarkan fungsi yang tidak melaksanakan antara muka Handler secara langsung digunakan dengannya. Ini pada asasnya satu cara untuk "menyesuaikan" fungsi agar sesuai dengan keperluan antara muka.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menyesuaikan Fungsi untuk Melaksanakan 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!