


Apakah hubungan antara jenis dan antara muka dalam bahasa Go
Dalam bahasa Go, terdapat hubungan satu-dengan-banyak dan banyak-dengan-satu antara jenis dan antara muka. Satu jenis boleh melaksanakan berbilang antara muka pada masa yang sama, dan antara muka adalah bebas antara satu sama lain dan tidak mengetahui pelaksanaan satu sama lain. Pelbagai jenis juga boleh melaksanakan antara muka yang sama: kaedah antara muka tidak semestinya perlu dilaksanakan sepenuhnya oleh jenis. Kaedah antara muka boleh dilaksanakan dengan membenamkan jenis atau struktur lain dalam jenis. Dalam erti kata lain, pengguna tidak peduli sama ada kaedah antara muka dilaksanakan sepenuhnya melalui satu jenis, atau sama ada ia dilaksanakan melalui berbilang struktur yang tertanam dalam struktur dan disatukan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Hubungan antara jenis dan antara muka bahasa Go
Dalam bahasa Go, terdapat satu-dengan-banyak dan banyak-dengan-satu hubungan antara jenis dan antara muka Konsep biasa ini akan disenaraikan di bawah untuk memudahkan pembaca memahami hubungan pelaksanaan antara antara muka dan jenis dalam persekitaran yang kompleks.
Sesuatu jenis boleh melaksanakan berbilang antara muka
Sesuatu jenis boleh melaksanakan berbilang antara muka pada masa yang sama, dan antara muka adalah bebas antara satu sama lain dan tidak mengetahui pelaksanaan satu sama lain .
Dua program pada rangkaian bertukar data melalui sambungan komunikasi dua hala Satu hujung sambungan dipanggil Soket. Soket boleh membaca dan menulis data pada masa yang sama, ciri ini serupa dengan fail. Oleh itu, semasa pembangunan, ciri membaca dan menulis kedua-dua fail dan Soket disarikan ke dalam konsep pembaca dan penulis bebas.
Soket, seperti fail, juga perlu mengeluarkan sumber selepas digunakan.
Ciri-ciri Socket yang boleh menulis data dan perlu ditutup diterangkan menggunakan antara muka Sila rujuk kod berikut:
type Socket struct { } func (s *Socket) Write(p []byte) (n int, err error) { return 0, nil } func (s *Socket) Close() error { return nil }
Kaedah Write() bagi struktur Soket yang dilaksanakan. antara muka io.Writer :
type Writer interface { Write(p []byte) (n int, err error) }
Pada masa yang sama, struktur Socket juga melaksanakan antara muka io.Closer:
type Closer interface { Close() error }
Menggunakan kod antara muka Writer yang dilaksanakan oleh Socket , tidak perlu mengetahui sama ada pelaksana antara muka Penulis mempunyai ciri Antara Muka Lebih Dekat. Begitu juga, kod yang menggunakan antara muka Closer tidak mengetahui bahawa Soket telah melaksanakan antara muka Penulis, seperti yang ditunjukkan dalam rajah berikut.
Rajah: Proses penggunaan dan pelaksanaan antara muka
Antara muka Writer dan kod antara muka Closer yang dilaksanakan menggunakan struktur Soket dalam kod adalah seperti berikut:
// 使用io.Writer的代码, 并不知道Socket和io.Closer的存在 func usingWriter( writer io.Writer){ writer.Write( nil ) } // 使用io.Closer, 并不知道Socket和io.Writer的存在 func usingCloser( closer io.Closer) { closer.Close() } func main() { // 实例化Socket s := new(Socket) usingWriter(s) usingCloser(s) }
usingWriter() dan usingCloser() adalah bebas sepenuhnya Mereka tidak mengetahui kewujudan satu sama lain, dan mereka juga tidak tahu bahawa antara muka yang mereka gunakan dilaksanakan oleh Socket.
Berbilang jenis boleh melaksanakan antara muka yang sama
Kaedah antara muka tidak semestinya perlu dilaksanakan sepenuhnya oleh satu jenis Kaedah antara muka boleh dibenamkan dalam jenis lain dalam jenis atau struktur. Dalam erti kata lain, pengguna tidak peduli sama ada kaedah antara muka dilaksanakan sepenuhnya melalui satu jenis, atau sama ada ia dilaksanakan melalui berbilang struktur yang tertanam dalam struktur dan disatukan.
Antara muka Perkhidmatan mentakrifkan dua kaedah: satu adalah untuk memulakan perkhidmatan (Start()), dan satu lagi adalah untuk mengeluarkan log (Log()). Gunakan struktur GameService untuk melaksanakan struktur GameService sendiri hanya boleh melaksanakan kaedah Start() dan kaedah Log() dalam antara muka Perkhidmatan telah dilaksanakan oleh logger (Logger) yang boleh mengeluarkan log GameService. Atau laksanakannya semula. Oleh itu, memilih untuk membenamkan Logger ke dalam GameService boleh mengelakkan redundansi kod dan memudahkan struktur kod sepenuhnya. Proses pelaksanaan terperinci adalah seperti berikut:
// 一个服务需要满足能够开启和写日志的功能 type Service interface { Start() // 开启服务 Log(string) // 日志输出 } // 日志器 type Logger struct { } // 实现Service的Log()方法 func (g *Logger) Log(l string) { } // 游戏服务 type GameService struct { Logger // 嵌入日志器 } // 实现Service的Start()方法 func (g *GameService) Start() { }
Penerangan kod adalah seperti berikut:
Barisan 2 mentakrifkan antara muka perkhidmatan perlu melaksanakan Mula () kaedah dan kaedah pembalakan.
Barisan 8 mentakrifkan struktur pembalak yang boleh mengeluarkan log.
Baris 12, tambahkan kaedah Log() pada Logger dan laksanakan kaedah Log() Perkhidmatan.
Barisan 17, mentakrifkan struktur GameService.
Barisan 18, benamkan logger Logger dalam GameService untuk melaksanakan fungsi pengelogan.
Barisan 22, kaedah Mula() GameService melaksanakan kaedah Mula() Perkhidmatan.
Pada ketika ini, nyatakan GameService dan tetapkan contoh kepada Perkhidmatan Kod adalah seperti berikut:
var s Service = new(GameService) s.Start() s.Log(“hello”)
s Anda boleh menggunakan kaedah Start() dan. Kaedah Log(), antaranya Start() dilaksanakan oleh GameService dan kaedah Log() dilaksanakan oleh Logger.
[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Apakah hubungan antara jenis dan antara muka dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

C lebih sesuai untuk senario di mana kawalan langsung sumber perkakasan dan pengoptimuman prestasi tinggi diperlukan, sementara Golang lebih sesuai untuk senario di mana pembangunan pesat dan pemprosesan konkurensi tinggi diperlukan. Kelebihan 1.C terletak pada ciri-ciri perkakasan dan keupayaan pengoptimuman yang tinggi, yang sesuai untuk keperluan berprestasi tinggi seperti pembangunan permainan. 2. Kelebihan Golang terletak pada sintaks ringkas dan sokongan konvensional semulajadi, yang sesuai untuk pembangunan perkhidmatan konvensional yang tinggi.

Golang cemerlang dalam aplikasi praktikal dan terkenal dengan kesederhanaan, kecekapan dan kesesuaiannya. 1) Pengaturcaraan serentak dilaksanakan melalui goroutine dan saluran, 2) Kod fleksibel ditulis menggunakan antara muka dan polimorfisme, 3) memudahkan pengaturcaraan rangkaian dengan pakej bersih/HTTP, 4) Membina crawler serentak yang cekap, 5) Debugging dan mengoptimumkan melalui alat dan amalan terbaik.

Ciri -ciri teras GO termasuk pengumpulan sampah, penyambungan statik dan sokongan konvensional. 1. Model keseragaman bahasa GO menyedari pengaturcaraan serentak yang cekap melalui goroutine dan saluran. 2. Antara muka dan polimorfisme dilaksanakan melalui kaedah antara muka, supaya jenis yang berbeza dapat diproses secara bersatu. 3. Penggunaan asas menunjukkan kecekapan definisi fungsi dan panggilan. 4. Dalam penggunaan lanjutan, kepingan memberikan fungsi saiz semula dinamik yang kuat. 5. Kesilapan umum seperti keadaan kaum dapat dikesan dan diselesaikan melalui perlumbaan getest. 6. Pengoptimuman prestasi menggunakan objek melalui sync.pool untuk mengurangkan tekanan pengumpulan sampah.

Pergi bahasa berfungsi dengan baik dalam membina sistem yang cekap dan berskala. Kelebihannya termasuk: 1. Prestasi Tinggi: Disusun ke dalam Kod Mesin, Kelajuan Berjalan Cepat; 2. Pengaturcaraan serentak: Memudahkan multitasking melalui goroutine dan saluran; 3. Kesederhanaan: sintaks ringkas, mengurangkan kos pembelajaran dan penyelenggaraan; 4. Cross-Platform: Menyokong kompilasi silang platform, penggunaan mudah.

Keliru mengenai penyortiran hasil pertanyaan SQL. Dalam proses pembelajaran SQL, anda sering menghadapi beberapa masalah yang mengelirukan. Baru-baru ini, penulis membaca "Asas Mick-SQL" ...

Hubungan antara konvergensi stack teknologi dan pemilihan teknologi dalam pembangunan perisian, pemilihan dan pengurusan susunan teknologi adalah isu yang sangat kritikal. Baru -baru ini, beberapa pembaca telah mencadangkan ...

Golang ...

Bagaimana membandingkan dan mengendalikan tiga struktur dalam bahasa Go. Dalam pengaturcaraan GO, kadang -kadang perlu untuk membandingkan perbezaan antara dua struktur dan menggunakan perbezaan ini kepada ...


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

Dreamweaver Mac版
Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).