Bidang sains komputer semasa sentiasa berkembang dan berinovasi. Dari segi bahasa pengaturcaraan, bahasa pengaturcaraan berorientasikan objek yang biasa pada masa lalu, seperti Java, C++, dan lain-lain, kini telah digantikan dengan bahasa pengaturcaraan baharu. Antaranya, Golang yang digemari ramai oleh pembangun adalah bahasa yang tidak menyokong model pengaturcaraan berorientasikan objek tradisional. Artikel ini akan meneroka sebab Golang tidak mempunyai "kelas" dan cara melaksanakan model pengaturcaraan yang serupa dengan cara lain.
Reka bentuk Golang untuk mengalih keluar kelas ialah percubaan untuk menentang reka bentuk bahasa berorientasikan objek tradisional. Dalam bahasa berorientasikan objek tradisional, kelas ialah struktur atur cara tetap yang mengandungi sifat dan kaedah. Oleh itu, apabila mereka bentuk sistem yang menyokong pengaturcaraan berorientasikan objek (OOP, Pengaturcaraan Berorientasikan Objek), biasanya perlu berurusan dengan kelas berorientasikan objek.
Walau bagaimanapun, Golang bukan sekadar bahasa pengaturcaraan dengan ciri bahasa berorientasikan objek, matlamatnya adalah untuk menjadi bahasa tujuan umum yang mengandungi kedua-dua paradigma pengaturcaraan berorientasikan proses dan berorientasikan objek. Oleh itu, Golang mempunyai beberapa ciri pengaturcaraan yang sangat berguna, termasuk:
Di Golang, tidak seperti bahasa berorientasikan objek tradisional seperti Java dan C++, tiada kelas, sebaliknya ialah "struktur", yang merupakan jenis tersuai. Melalui struktur, kita boleh menyusun pembolehubah dan membungkusnya bersama-sama, dan kemudian menggunakan kaedah untuk beroperasi pada struktur ini.
Sebagai contoh, berikut ialah definisi struktur ringkas:
type Person struct { name string age int }
Contoh mencipta struktur Orang:
p1 := Person{name: "John", age: 26}
Memanggil kaedah struktur:
p1.hello() //在Person结构中定义的方法
Melalui struktur, kami boleh melaksanakan operasi seperti kelas dengan mudah tanpa memerlukan penggunaan kelas tetap dalam bahasa pengaturcaraan berorientasikan objek.
Kaedah dalam Golang ialah fungsi yang boleh beroperasi pada struktur. Dengan mentakrifkan kaedah melalui jenis struktur, pembolehubah boleh terikat kepada kaedah dan bukannya kaedah mengikat kepada kelas seperti bahasa berorientasikan objek tradisional. Kaedah boleh digunakan untuk memanipulasi struktur dan melaksanakan operasi ke atasnya.
Sebagai contoh, untuk struktur Orang yang ditakrifkan dalam contoh di atas, anda boleh mentakrifkan kaedah sapaan:
func (p Person) hello() { fmt.Printf("My name is %s, I'm %d years old.\n", p.name, p.age) }
Kaedah dalam contoh di atas ditakrifkan secara langsung pada struktur, iaitu sedikit seperti "Kaedah ahli" dalam pengaturcaraan berorientasikan objek. Di Golang, kaedah pada struktur biasanya ditakrifkan dalam fail definisi struktur, tetapi fail definisi tidak diperlukan.
Di Golang, antara muka ialah jenis tersuai. Antara muka mentakrifkan tandatangan set kaedah, dan jenis dianggap melaksanakan antara muka jika ia mentakrifkan semua kaedah yang diperlukan. Jenis dengan antara muka boleh digantikan dengan antara muka dan ditakrifkan dengan set kaedah yang sama.
Antara muka adalah konsep yang sangat penting di Golang, yang boleh menjadikan hubungan antara modul program lebih telus. Apabila pembangun menyediakan antara muka kepada modul, mereka boleh mengekalkan tandatangan kaedah yang dipanggil tanpa perlu melaksanakan pelaksanaan khusus modul tersebut. Pembangun seterusnya mungkin menggantikannya dengan pelaksanaan yang lebih kaya, yang membantu meningkatkan kebolehskalaan program.
Fungsi Golang ialah warga kelas pertama, yang bermaksud fungsi ialah objek. Fungsi boleh diberikan kepada pembolehubah dan boleh diterima sebagai parameter dan nilai pulangan oleh fungsi lain. Ini adalah konsep yang sangat penting di Golang, kerana ramai orang berpendapat bahawa fungsi adalah cara yang lebih semula jadi untuk melakukan reka bentuk berorientasikan objek.
Walaupun Golang sendiri tidak mempunyai konsep kelas, pembangun boleh menggunakan struktur dan kaedah untuk mensimulasikan model pengaturcaraan ini. Kaedah ini dipanggil "contoh" dalam Go.
Sebagai contoh, katakan kita ingin mentakrifkan operasi seperti kelas untuk struktur yang dipanggil Person:
type Person struct { name string age int }
Berikut ialah beberapa kaedah (serupa dengan fungsi ahli kelas):
func (p *Person) SetName(name string) { p.name = name } func (p *Person) SetAge(age int) { p.age = age } func (p *Person) GetAge() int { return p.age }
Contoh di atas mentakrifkan tiga kaedah untuk mengendalikan struktur Orang: SetName, SetAge dan GetAge. Nilai asal struktur boleh diubah suai menggunakan parameter penunjuk.
Berikut ialah contoh cara mencipta struktur Orang:
p := Person{"Golang", 10}
Di mana "p" ialah "contoh" seperti kelas.
Seterusnya, kita boleh "membuat" contoh baharu struktur dengan menggunakan fungsi. Berikut ialah contoh:
func NewPerson(name string, age int) *Person { p := Person{name, age} return &p }
Fungsi "NewPerson" boleh digunakan seperti ini dan akan mengembalikan penuding kepada contoh "Golang":
p := NewPerson("Golang", 10)
Walaupun "contoh" tidak Seperti "kelas" dalam bahasa pengaturcaraan berorientasikan objek tradisional, tetapi cara struct dan kaedah digunakan di Golang boleh mensimulasikan konsep kelas yang hampir sama.
Walaupun tiada kelas, struktur dan kaedah Golang menyelaraskan penggunaan paradigma pengaturcaraan berorientasikan objek dan prosedur. Menggunakan struktur dan kaedah, kita boleh melaksanakan model pengaturcaraan yang serupa dengan kelas untuk mengurus pembolehubah dan operasi. Oleh itu, Golang boleh menggunakan ciri bahasa yang sangat berguna ini walaupun tanpa kelas, menjadikannya bahasa pembangunan web yang pantas, fleksibel dan berkuasa.
Atas ialah kandungan terperinci Mengapa Golang tidak mempunyai 'kelas'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!