Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Anda Boleh Menyesuaikan Fungsi untuk Melaksanakan Antara Muka dalam 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++ }
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 }
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)
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!