Rumah pembangunan bahagian belakang Golang Adakah bahasa go mempunyai pembina?

Adakah bahasa go mempunyai pembina?

Jan 10, 2023 pm 02:15 PM
golang pergi bahasa Pembina

Bahasa Go tidak mempunyai pembina. Bahasa Go, sebagai bahasa berstruktur, tidak mempunyai pembina dalam bahasa berorientasikan objek Walau bagaimanapun, kesan serupa pembina dalam bahasa berorientasikan objek boleh dicapai dalam beberapa cara, iaitu, menggunakan proses permulaan struktur untuk mensimulasikan. pelaksanaan pembina.

Adakah bahasa go mempunyai pembina?

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Pembina ialah kaedah khas, terutamanya digunakan untuk memulakan objek semasa menciptanya, iaitu, memberikan nilai awal kepada pembolehubah ahli objek. Kelas khas boleh mempunyai berbilang pembina, yang boleh dibezakan mengikut bilangan parameter atau jenis parameter, iaitu kelebihan beban pembina.

Sebagai bahasa berstruktur, Golang tidak mempunyai kaedah pembinaan dalam bahasa berorientasikan objek, tetapi Golang boleh melaksanakan idea dan kaedah pengaturcaraan berorientasikan objek seperti warisan dan pembina seperti C++.

Oleh kerana struct ialah jenis nilai, jika strukturnya kompleks, overhed prestasi 值拷贝 akan menjadi agak besar, jadi pembina mengembalikan jenis 结构体指针.

Spesifikasi

  • Mulakan dengan kata kunci Baharu

  • Penunjuk struktur pulangan

Pelbagai cara untuk mencipta dan memulakan struktur - mensimulasikan beban berlebihan pembina

Jika anda menggunakan struktur untuk menerangkan ciri-ciri kucing, maka Terdapat boleh menjadi jenis kucing yang berbeza mengikut warna dan nama mereka Kemudian warna dan nama yang berbeza adalah medan struktur Pada masa yang sama, anda boleh menggunakan warna dan nama untuk membina contoh jenis kucing yang berbeza rujuk kod berikut:

type Cat struct {
    Color string
    Name  string
}
func NewCatByName(name string) *Cat {
    return &Cat{
        Name: name,
    }
}
func NewCatByColor(color string) *Cat {
    return &Cat{
        Color: color,
    }
}
Salin selepas log masuk

Perihalan kod adalah seperti berikut:

  • Barisan 1 mentakrifkan struktur Kucing, termasuk medan warna dan nama.

  • Barisan 6 mentakrifkan fungsi yang membina struktur kucing daripada nama dan mengembalikan penunjuk Kucing.

  • Barisan 7 mengambil alamat dan menggambarkan struktur kucing.

  • Barisan 8 memulakan medan nama kucing, mengabaikan medan warna.

  • Baris 12 mentakrifkan fungsi yang membina struktur kucing dengan warna dan mengembalikan penunjuk Kucing.

Dalam contoh ini, jenis kedua-dua atribut, warna dan nama, adalah kedua-dua rentetan Memandangkan tiada fungsi lebihan dalam bahasa Go, untuk mengelakkan konflik nama fungsi, gunakan NewCatByName() dan NewCatByColor() Dua nama fungsi berbeza mewakili proses pembinaan Cat yang berbeza.

Pembinaan dan permulaan struktur dengan hubungan ibu bapa-anak - meniru panggilan pembinaan ibu bapa

Kucing hitam ialah sejenis kucing, kucing Ia adalah istilah umum untuk kucing hitam Apabila menerangkan kedua-dua konsep ini pada masa yang sama, ia berasal dari jenis kucing Apabila menggunakan struktur untuk menggambarkan hubungan antara kucing dan kucing hitam, struktur kucing adalah tertanam dalam kucing hitam. Dalam kucing (BlackCat), ini bermakna kucing hitam mempunyai ciri-ciri kucing, dan kemudian menggunakan dua pembina berbeza untuk membina dua contoh struktur kucing hitam dan kucing masing-masing Rujuk kod berikut:

type Cat struct {
    Color string
    Name  string
}
type BlackCat struct {
    Cat  // 嵌入Cat, 类似于派生
}
// “构造基类”
func NewCat(name string) *Cat {
    return &Cat{
        Name: name,
    }
}
// “构造子类”
func NewBlackCat(color string) *BlackCat {
    cat := &BlackCat{}
    cat.Color = color
    return cat
}
Salin selepas log masuk

Penerangan kod adalah seperti berikut:

  • Baris 6 mentakrifkan struktur BlackCat dan membenamkan struktur Cat memiliki semua ahli Cat dan boleh mengakses semua ahli Cat secara bebas selepas instantiasi.

  • Dalam baris 11, fungsi NewCat() mentakrifkan proses pembinaan Cat, menggunakan nama sebagai parameter untuk mengisi struktur Cat.

  • Baris 18, NewBlackCat() menggunakan warna sebagai parameter dan membina penunjuk BlackCat.

  • Barisan 19, nyatakan struktur BlackCat dan Cat juga dibuat seketika pada masa yang sama.

  • Baris 20, isikan atribut warna Cat yang dibenamkan dalam BlackCat BlackCat tidak mempunyai sebarang ahli dan semua ahli berasal dari Cat.

Dalam contoh ini, struktur Cat adalah serupa dengan "kelas asas" dalam berorientasikan objek, dan BlackCat dibenamkan dalam struktur Cat, yang serupa dengan "derivatif" dalam berorientasikan objek Apabila dijadikan instantiated, The Cat dalam BlackCat juga akan dijadikan instantiated.

Ringkasnya, bahasa Go tidak menyediakan mekanisme khas yang berkaitan dengan pembina Pengguna boleh menyelesaikan tugas pembina dengan menghantar parameter ke dalam parameter pembinaan struktur mengikut keperluan mereka sendiri.

[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Adakah bahasa go mempunyai pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah masalah dengan thread giliran di crawler colly go? Apakah masalah dengan thread giliran di crawler colly go? Apr 02, 2025 pm 02:09 PM

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Apr 02, 2025 pm 02:06 PM

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Apr 02, 2025 pm 04:54 PM

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Apr 02, 2025 pm 02:03 PM

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apr 02, 2025 pm 05:09 PM

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Apr 02, 2025 pm 04:12 PM

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Apakah perbezaan antara struktur definisi kata kunci `var` dan` type` dalam bahasa Go? Apakah perbezaan antara struktur definisi kata kunci `var` dan` type` dalam bahasa Go? Apr 02, 2025 pm 12:57 PM

Dua cara untuk menentukan struktur dalam bahasa Go: perbezaan antara VAR dan jenis kata kunci. Apabila menentukan struktur, pergi bahasa sering melihat dua cara menulis yang berbeza: pertama ...

Bagaimana untuk memastikan kesesuaian adalah selamat dan cekap apabila menulis log pelbagai proses? Bagaimana untuk memastikan kesesuaian adalah selamat dan cekap apabila menulis log pelbagai proses? Apr 02, 2025 pm 03:51 PM

Cecair mengendalikan isu keselamatan bersamaan dalam penulisan log pelbagai proses. Proses berganda menulis fail log yang sama pada masa yang sama. Bagaimana untuk memastikan kesesuaian selamat dan cekap? Ini ...

See all articles