Type Aliasing vs. Type Definition in Go
Dalam Go, terdapat dua cara untuk menentukan jenis baharu: taip aliasing dan taip definisi. Walaupun mekanisme ini mungkin kelihatan serupa pada pandangan pertama, terdapat perbezaan yang halus tetapi ketara di antara mereka.
Pengalian Jenis (jenis A = rentetan)
Pengalian jenis mencipta alias untuk jenis sedia ada. Ini bermakna nama jenis baharu (A dalam kes ini) menjadi sinonim untuk jenis asal (rentetan). Apabila menggunakan alias, semua sifat dan kaedah jenis asal diwarisi oleh alias. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa anda tidak boleh mentakrifkan kaedah baharu pada alias jenis.
Definisi Jenis (rentetan jenis A)
Takrifan jenis, sebaliknya, mencipta jenis baharu sama sekali. Walaupun ia mungkin berkongsi perwakilan asas yang sama seperti jenis lain (seperti rentetan dalam kes ini), ia adalah jenis yang berbeza dengan set sifat dan kaedahnya sendiri. Takrifan jenis membolehkan anda menentukan kaedah tersuai pada jenis baharu dan pantulan akan mengecam jenis baharu secara berasingan daripada jenis asas.
Contoh
Untuk menggambarkan perbezaan, pertimbangkan kod berikut:
package main import ( "fmt" ) type A = string type B string func (b B) CustomMethod() { fmt.Println("Custom method called on B") } func main() { var a A = "hello" var b B = "hello" fmt.Printf("a is %T\nb is %T\n", a, b) b.CustomMethod() // Legal // a.CustomMethod() // Compile-time error }
Dalam contoh ini, jenis A ialah alias untuk rentetan, jadi a ialah rentetan jenis. Jenis B ialah jenis baharu yang ditakrifkan daripada rentetan, yang membolehkan kami mentakrifkan kaedah tersuai padanya (CustomMethod). Penyemak jenis akan mengenal pasti b dengan betul sebagai jenis B dan kaedah CustomMethod boleh digunakan padanya. Walau bagaimanapun, cubaan menggunakan CustomMethod pada a akan mengakibatkan ralat masa kompilasi kerana alias jenis tidak mewarisi kaedah.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Jenis Aliasing dan Definisi Jenis dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!