Rumah > pembangunan bahagian belakang > Golang > Takrifkan jenis sebagai instantiasi jenis generik

Takrifkan jenis sebagai instantiasi jenis generik

WBOY
Lepaskan: 2024-02-10 12:50:08
ke hadapan
615 orang telah melayarinya

Takrifkan jenis sebagai instantiasi jenis generik

PHP Editor Xigua akan memperkenalkan anda kepada konsep penting hari ini - mentakrifkan jenis sebagai instantiasi jenis generik. Dalam pengaturcaraan, generik ialah cara yang fleksibel untuk menulis kod umum tanpa menyatakan jenis tertentu. Dengan mentakrifkan jenis sebagai instantiasi jenis generik, kami boleh menentukan jenis tertentu apabila menggunakannya, menjadikan kod itu lebih fleksibel dan boleh digunakan semula. Seterusnya, mari kita selami konsep ini dan lihat cara melaksanakan generik dalam PHP.

Kandungan soalan

Dalam contoh di bawah, saya cuba mentakrifkan jenis PreciseAdder untuk memudahkan penggunaan jenis generik instantiated. Malangnya, pengkompil go nampaknya berfikir bahawa kaedah yang ditakrifkan pada jenis generik tidak boleh digunakan untuk jenis PreciseAdder. Saya tahu saya boleh menyelesaikan masalah ini melalui komposisi, tetapi adakah terdapat cara untuk menyelesaikan masalah ini melalui definisi jenis, dan jika tidak, apakah sebabnya?

package main

type Addable interface {
    Add()
}

type Adder[T Addable] struct{}

func (a Adder[T]) DoAdd(){}

type PreciseAddable struct{}

func (p PreciseAddable)Add(){}

type PreciseAdder Adder[PreciseAddable]

func main() {
    var p PreciseAdder
    p.DoAdd()
}
Salin selepas log masuk

Penyelesaian

ini:

type PreciseAdder Adder[PreciseAddable]
Salin selepas log masuk

ialah pengisytiharan jenis, lebih khusus lagi takrif jenis. Ia mencipta jenis baharu, mengalih keluar semua kaedah.

Sebaliknya gunakan jenis alias yang akan mengekalkan semua kaedah, ia hanya memperkenalkan pengecam baharu untuk merujuk jenis yang sama:

type PreciseAdder = Adder[PreciseAddable]
Salin selepas log masuk

(Perhatikan simbol = antara pengecam dan jenis.)

Atas ialah kandungan terperinci Takrifkan jenis sebagai instantiasi jenis generik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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