


Amalan pengaturcaraan berorientasikan objek dalam bahasa Go
Dalam Go, pengaturcaraan berorientasikan objek dilaksanakan menggunakan struktur dan kaedah: tentukan struktur untuk mewakili jenis data tersuai dan mengandungi medan data. Tentukan kaedah untuk memanipulasi dan mengubah suai contoh struktur Kaedah dikaitkan dengan jenis penerima (iaitu, struktur). Gunakan struktur dan kaedah untuk mengurus data, seperti mencipta kejadian, mengakses maklumat dan mengubah suai data.
Amalan pengaturcaraan berorientasikan objek dalam bahasa Go
Dalam bahasa Go, pengaturcaraan berorientasikan objek (OOP) dilaksanakan melalui struktur dan kaedah. Artikel ini akan membimbing anda menggunakan bahasa Go untuk pengaturcaraan OOP dan mendalami pemahaman anda melalui kes praktikal.
Struktur
Struktur ialah mekanisme untuk menentukan jenis data tersuai dalam bahasa Go. Ia mengandungi satu set medan data jenis yang sama. Cipta struct seperti yang ditunjukkan di bawah:
type Person struct { name string age int }
Struktur ini mentakrifkan jenis yang dipanggil Orang
yang mengandungi dua medan: name
(rentetan) dan age
( integer). Person
的类型,该类型包含两个字段:name
(字符串)和 age
(整型)。
方法
方法是由接收器类型(即结构体)关联的函数。它们用于操作和修改结构体实例。如下所示为结构体定义一个方法:
func (p *Person) Greet() { fmt.Printf("你好,我的名字是 %s\n", p.name) }
此方法接收一个 Person
结构体指针 p
作为参数,并使用 p
访问结构体字段。它打印一个带有结构体 name
字段值的欢迎消息。
实战案例:员工管理
现在,我们来看看一个实战案例,展示如何在 Go 中使用 OOP 管理员工信息。
// 定义员工结构体 type Employee struct { name string salary int manager *Employee // 指向经理的指针 } // 为员工结构体定义方法 func (e *Employee) GetSalary() int { return e.salary } func (e *Employee) Promote(salary int) { e.salary = salary } func main() { // 创建员工实例 ceo := Employee{name: "Tim", salary: 100000} manager := Employee{name: "Bob", salary: 50000, manager: &ceo} employee := Employee{name: "John", salary: 20000, manager: &manager} // 访问员工信息 fmt.Printf("CEO 的薪水:%d\n", ceo.GetSalary()) fmt.Printf("经理的薪水:%d\n", manager.GetSalary()) fmt.Printf("员工的薪水:%d\n", employee.GetSalary()) // 提升经理的薪水 manager.Promote(60000) fmt.Printf("经理的新薪水:%d\n", manager.GetSalary()) }
在这个示例中,我们创建了三个员工实例:CEO、经理和员工。每个员工都有一个 name
和 salary
字段,经理也有一个指向其 manager
的指针。我们还为结构体定义了方法来获取和修改员工的薪水。
在 main
Orang
p
sebagai parameter dan diakses menggunakan Struktur p
padang. Ia mencetak mesej alu-aluan dengan nilai medan name
struktur. 🎜🎜🎜Kes Praktikal: Pengurusan Pekerja🎜🎜🎜Sekarang, mari kita lihat kes praktikal untuk menunjukkan cara menggunakan OOP untuk mengurus maklumat pekerja dalam Go. 🎜rrreee🎜Dalam contoh ini, kami mencipta tiga contoh pekerja: Ketua Pegawai Eksekutif, pengurus dan pekerja. Setiap pekerja mempunyai medan nama
dan gaji
dan pengurus juga mempunyai penunjuk kepada manager
nya. Kami juga menentukan kaedah untuk struktur mendapatkan dan mengubah suai gaji pekerja. 🎜🎜Dalam fungsi utama
, kami mencipta kejadian pekerja ini dan mengakses maklumat mereka. Kami juga menunjukkan cara untuk menaikkan gaji pengurus dan mencetak gaji barunya. 🎜Atas ialah kandungan terperinci Amalan pengaturcaraan berorientasikan objek dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Anda boleh menggunakan refleksi untuk mengakses medan dan kaedah peribadi dalam bahasa Go: Untuk mengakses medan peribadi: dapatkan nilai pantulan nilai melalui reflect.ValueOf(), kemudian gunakan FieldByName() untuk mendapatkan nilai pantulan medan dan panggil Kaedah String() untuk mencetak nilai medan . Panggil kaedah persendirian: dapatkan juga nilai pantulan nilai melalui reflect.ValueOf(), kemudian gunakan MethodByName() untuk mendapatkan nilai pantulan kaedah, dan akhirnya panggil kaedah Call() untuk melaksanakan kaedah. Kes praktikal: Ubah suai nilai medan persendirian dan panggil kaedah persendirian melalui refleksi untuk mencapai kawalan objek dan liputan ujian unit.

Ujian prestasi menilai prestasi aplikasi di bawah beban yang berbeza, manakala ujian unit mengesahkan ketepatan satu unit kod. Ujian prestasi memfokuskan pada mengukur masa tindak balas dan daya pemprosesan, manakala ujian unit memfokuskan pada output fungsi dan liputan kod. Ujian prestasi mensimulasikan persekitaran dunia sebenar dengan beban tinggi dan serentak, manakala ujian unit dijalankan di bawah beban rendah dan keadaan bersiri. Matlamat ujian prestasi adalah untuk mengenal pasti kesesakan prestasi dan mengoptimumkan aplikasi, manakala matlamat ujian unit adalah untuk memastikan ketepatan dan keteguhan kod.

Perangkap dalam Bahasa Go Semasa Merekabentuk Sistem Teragih Go ialah bahasa popular yang digunakan untuk membangunkan sistem teragih. Walau bagaimanapun, terdapat beberapa perangkap yang perlu diberi perhatian apabila menggunakan Go yang boleh menjejaskan kekukuhan, prestasi dan ketepatan sistem anda. Artikel ini akan meneroka beberapa perangkap biasa dan memberikan contoh praktikal tentang cara mengelakkannya. 1. Terlalu banyak menggunakan concurrency Go ialah bahasa concurrency yang menggalakkan pembangun menggunakan goroutine untuk meningkatkan paralelisme. Walau bagaimanapun, penggunaan konkurensi yang berlebihan boleh menyebabkan ketidakstabilan sistem kerana terlalu banyak gorout bersaing untuk mendapatkan sumber dan menyebabkan overhed penukaran konteks. Kes praktikal: Penggunaan concurrency yang berlebihan membawa kepada kelewatan respons perkhidmatan dan persaingan sumber, yang ditunjukkan sebagai penggunaan CPU yang tinggi dan overhed kutipan sampah yang tinggi.

Amalan terbaik OOP dalam PHP termasuk konvensyen penamaan, antara muka dan kelas abstrak, pewarisan dan polimorfisme, dan suntikan kebergantungan. Kes praktikal termasuk: menggunakan mod gudang untuk mengurus data dan menggunakan mod strategi untuk melaksanakan pengisihan.

Perpustakaan dan alatan untuk pembelajaran mesin dalam bahasa Go termasuk: TensorFlow: perpustakaan pembelajaran mesin popular yang menyediakan alatan untuk membina, melatih dan menggunakan model. GoLearn: Satu siri algoritma pengelasan, regresi dan pengelompokan Gonum: Pustaka pengkomputeran saintifik yang menyediakan operasi matriks dan fungsi algebra linear.

Dengan keselarasan tinggi, kecekapan dan sifat merentas platform, bahasa Go telah menjadi pilihan ideal untuk pembangunan aplikasi Internet Perkara (IoT) mudah alih. Model keselarasan Go mencapai tahap keselarasan yang tinggi melalui goroutine (coroutine ringan), yang sesuai untuk mengendalikan sejumlah besar peranti IoT yang disambungkan pada masa yang sama. Penggunaan sumber Go yang rendah membantu menjalankan aplikasi dengan cekap pada peranti mudah alih dengan pengkomputeran dan storan terhad. Selain itu, sokongan merentas platform Go membolehkan aplikasi IoT digunakan dengan mudah pada pelbagai peranti mudah alih. Kes praktikal menunjukkan penggunaan Go untuk membina aplikasi penderia suhu BLE, berkomunikasi dengan penderia melalui BLE dan memproses data masuk untuk membaca dan memaparkan bacaan suhu.

Evolusi konvensyen penamaan fungsi Golang adalah seperti berikut: Peringkat awal (Go1.0): Tiada konvensyen formal dan penamaan unta digunakan. Konvensyen garis bawah (Go1.5): Fungsi yang dieksport bermula dengan huruf besar dan diawali dengan garis bawah. Konvensyen fungsi kilang (Go1.13): Fungsi yang mencipta objek baharu diwakili oleh awalan "Baharu".

Takrifan makro fungsi dalam bahasa Go membolehkan penunjuk fungsi disimpan dalam pemalar untuk mengikat panggilan fungsi terlebih dahulu dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Langkah-langkah khusus adalah seperti berikut: Gunakan kata kunci const untuk menentukan makro, nyatakan nama makro, senarai parameter dan jenis nilai pulangan. Tulis badan fungsi dalam makro fungsi. Panggil makro fungsi dengan namanya. Makro fungsi boleh digunakan dalam pelbagai senario, seperti perbandingan kandungan fail.
