Rumah >pembangunan bahagian belakang >Golang >Adakah bahasa go mempunyai pembina?

Adakah bahasa go mempunyai pembina?

青灯夜游
青灯夜游asal
2023-01-10 14:15:421397semak imbas

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,
    }
}

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
}

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:
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