Mengapa Golang tidak mempunyai 'kelas'

PHPz
Lepaskan: 2023-04-25 16:51:11
asal
798 orang telah melayarinya

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.

Mengapa Golang tidak mempunyai "kelas"

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:

Struct (Struct)

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
}
Salin selepas log masuk
Salin selepas log masuk

Contoh mencipta struktur Orang:

p1 := Person{name: "John", age: 26}
Salin selepas log masuk

Memanggil kaedah struktur:

p1.hello() //在Person结构中定义的方法
Salin selepas log masuk

Melalui struktur, kami boleh melaksanakan operasi seperti kelas dengan mudah tanpa memerlukan penggunaan kelas tetap dalam bahasa pengaturcaraan berorientasikan objek.

Kaedah

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)
}
Salin selepas log masuk

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.

Antaramuka

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

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.

Bagaimana cara menggunakan Golang untuk melaksanakan model pengaturcaraan "serupa"?

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
}
Salin selepas log masuk
Salin selepas log masuk

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
}
Salin selepas log masuk

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}
Salin selepas log masuk

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
}
Salin selepas log masuk

Fungsi "NewPerson" boleh digunakan seperti ini dan akan mengembalikan penuding kepada contoh "Golang":

p := NewPerson("Golang", 10)
Salin selepas log masuk

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.

Kesimpulan

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!

sumber:php.cn
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