Dalam bidang pengaturcaraan Go, seseorang mungkin menghadapi sintaks pengisytiharan jenis yang pelik seperti:
// PublicKey is the type of Ed25519 public keys. type PublicKey []byte
Pengisytiharan ini menimbulkan persoalan: Adakah ia mencipta struct baharu yang diwarisi daripada []bait? Adakah ia hanya satu alias? Dan bukankah warisan dilarang dalam Go?
Jawapannya terletak pada konsep pengisytiharan jenis, khususnya definisi jenis. Ia mencipta jenis baharu, bernama PublicKey, dengan []bait sebagai jenis asasnya. Jenis ini kini mempunyai identiti yang berbeza daripada jenis asasnya.
Takrifan Jenis:
Takrifan jenis mempunyai beberapa tujuan:
Kaedah dan Antara muka:
Hanya jenis dengan kaedah boleh melaksanakan antara muka. Antara muka mentakrifkan satu set kaedah yang mesti dilaksanakan oleh jenis. Dengan mencipta jenis baharu, adalah mungkin untuk mentakrifkan kaedah yang selaras dengan keperluan antara muka tertentu.
Sebagai contoh, []int tidak boleh melaksanakan isihan.Antaramuka (diperlukan untuk mengisih), jadi jenis jenis baharu.IntSlice dicipta untuk melampirkan kaedah yang diperlukan. Ini membolehkan anda mengisih nilai jenis jenis.IntSlice tetapi bukan []int.
Pembenaman dan Pewarisan:
Bertentangan dengan pewarisan, pembenaman membenarkan satu jenis memasukkan bidang dan kaedah jenis lain. Walau bagaimanapun, jenis terbenam tidak mewarisi kaedah jenis benam.
Kesimpulannya, pengisytiharan taip dalam Go membolehkan penciptaan jenis baharu, mudah dan boleh diperluaskan. Ia membenarkan anda melampirkan kaedah dan melaksanakan antara muka, sekali gus memanjangkan keupayaan jenis sedia ada tanpa menggunakan warisan.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Pengisytiharan Jenis dan Warisan dalam Contoh `PublicKey` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!