Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Tingkah Laku Kelas Abstrak Boleh Disimulasikan dalam Go?
Melaksanakan Kelas Abstrak dalam Go
Go tidak menyokong kelas abstrak secara asli kerana tumpuannya pada keselamatan dan kesederhanaan. Walau bagaimanapun, terdapat penyelesaian untuk mensimulasikan tingkah laku abstrak.
Soalan Asal
Soalan membincangkan ketidakupayaan untuk mempunyai pelaksanaan lalai dalam antara muka Go. Memandangkan antara muka dalam Go tidak boleh mengandungi medan, adalah sukar untuk melaksanakan objek tanpa kewarganegaraan dengan gelagat lalai.
Penyelesaian Menggunakan Daemon Abstrak
Penyelesaian yang disediakan menggunakan daemon abstrak yang berfungsi sebagai perantara antara antara muka dan pelaksanaan konkrit.
type AbstractDaemon struct { Daemon }
Abstrak daemon menerima struktur antara muka melalui medan Daemonnya. Ini membolehkan gelagat lalai ditakrifkan dalam daemon abstrak.
func (a *AbstractDaemon) start(duration time.Duration) { // Default implementation for start }
Pelaksanaan Konkrit
Pelaksanaan konkrit membenamkan daemon abstrak dan menentukan kaedah doWork mereka sendiri:
type ConcreteDaemonA struct { *AbstractDaemon foo int } func (a *ConcreteDaemonA) doWork() { // Custom implementation for ConcreteDaemonA }
Instansiasi dan Penggunaan
Pelaksanaan konkrit boleh dijadikan instantiated dan digunakan sebagai jenis antara muka:
var dA Daemon = newConcreteDaemonA() dA.start(1 * time.Second)
Penilaian
Penyelesaian ini menyediakan cara untuk melaksanakan kelas abstrak dalam Go dengan mengasingkan gelagat lalai daripada antara muka dan mentakrifkannya dalam struktur abstrak yang berasingan. Ia merupakan pendekatan yang biasa digunakan dalam Go untuk mencapai tingkah laku abstrak walaupun terdapat batasan bahasa.
Atas ialah kandungan terperinci Bagaimanakah Tingkah Laku Kelas Abstrak Boleh Disimulasikan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!