Apabila berurusan dengan jenis yang dinamakan, adalah penting untuk memahami perbezaan antara mencipta jenis baharu dan membenamkan jenis sedia ada. Mari kita terokai cara menambah kaedah pada jenis sedia ada sambil mengekalkan kaedah asalnya.
Kes 1: Jenis Dinamakan
Jika anda menggunakan kata kunci jenis untuk menentukan jenis baharu , ia akan berbeza daripada jenis asas. Contohnya, dalam coretan kod yang disediakan:
type StartTime time.Time
StartTime ialah jenis baharu dan ia tidak akan mempunyai kaedah masa. Masa, seperti Date(). Ini kerana jenis yang dinamakan tidak mewarisi kaedah daripada jenis asasnya.
Kes 2: Membenamkan
Untuk menambah kaedah kepada jenis sedia ada tanpa kehilangan kaedah asalnya, gunakan membenamkan. Ini melibatkan mencipta struct baharu yang membenamkan jenis sedia ada. Sebagai contoh, kita boleh menulis semula kod di atas menggunakan pembenaman:
type StartTime struct { time.Time }
Dalam kes ini, StartTime membenamkan masa. Masa, bermakna ia merangkumi semua kaedah dan medannya.
Bagaimana Benam Berfungsi
Apabila struct membenamkan struct lain tanpa nama (tanpa menyatakan medan nama), medan dan kaedah struct terbenam dinaikkan pangkat kepada struct benam. Ini bermakna ia boleh digunakan terus pada contoh struct pembenaman.
Contoh Penggunaan
Dengan pembenaman, anda boleh mengakses kaedah Masa Mula dan Masa.
func main() { s := StartTime{time.Now()} fmt.Println(s.Date()) // Will output the current date }
Kesimpulan
Jika anda perlu mengubah suai tingkah laku atau menambah kaedah pada jenis sedia ada, pertimbangkan untuk menggunakan pembenaman. Ia membolehkan anda mengekalkan kaedah asal sambil memanjangkan kefungsian jenis.
Atas ialah kandungan terperinci Jenis Dinamakan lwn. Pembenaman: Bagaimana Saya Menambah Kaedah pada Jenis Go Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!