Langsung aja gan disini ane akan menjelaskan apakah Go itu adalah sebuah bahasa pemrograman dengan OOP... ^_^
Indikasi awal yang digunakan untuk mendeteksi bahwa itu adalah OOPS, Langkah pertama yang harus diingat adalah Go tidak memiliki kata kunci 'class'. Sebuah struct adalah apa yang akan digunakan untuk konsep paralel di Go. Bahasa seperti Java, C #, C ++ dan lain-lain juga memiliki struct. Seperti banyak dari bahasa pemrograman yang lain mendukung penggunan metode struct, Go juga begitu. Sehingga seharusnya tidak sulit untuk dipahami. Tapi ada perbedaan. o__o)
Dalam beberapa bahasa berorientasi objek, metode terdiri dalam class atau struct. Di Go, mereka 'associated' dengan struct.
Potongan script: Untuk Jawa
class House { public String getHouseName() { //metode untuk mendefinisikan class } }
Potongan script: Untuk Go
type House struct { } func (h House) GetHouseName() string { } //metode untuk mendefinisikan struck yang beradadalam House struct
Sekarang mari kita belajar cara membuat struct dan spesialisasi mereka dalam Go, yang memungkinkan kita untuk mendapatkan semua kebaikan pemrograman berorientasi objek tanpa benar-benar membutuhkannya. .___.)/ Sebuah struct didefinisikan dengan type dan struct sebagai kata kunci.
type my_struct_name struct { } type Rectangle struct { } type Vehicle struct { } type Vehicle1_Car struct { }
Semua pernyataan di atas adalah definisi yang valid karena mereka mengikuti penamaan konvensi variable Go . Yang di bawah ini adalah tidak sah.
type Hash# struct {} //tidak mempunyai karakter spesial type 0struct struct {} //tidak dapat memulai dengan angka
Berikutnya, struct dapat berisi data lainnya. Jadi struct, seperti class yang memungkinkan untuk menentukan isi dari item dunia nyata yang sedang mencoba untuk mewakili dan menata letak memori yang sesuai. Berikut adalah beberapa contoh yang valid.
type my_struct_name struct { i int j int s string } type Rectangle struct { length, width int //dapat mendefinisikan item multiple pada beberapa tipe yang sama d dengan garis yang dibatasi dengan koma area float64 }
Sekarang untuk menggunakan struct dalam kode. Ane mencoba mempertahankan bagian dari kelas Rectangle dan mencetaknya.
package main import "fmt" type Rectangle struct { length, width int } func main() { r := Rectangle{} fmt.Println("Default rectangle is: ", r) //mencetak nilai default }
Default rectangle is: {0 0}
Ada satu hal penting untuk melihat output: nilai-nilai variabel dalam struct adalah nol-ed, yaitu int akan 0, string akan kosong, dll Jadi pada dasarnya, struct juga memiliki nilai nol ed yang diinisialisasi tergantung pada jenis konstituennya.
Pada contoh berikut, terlihat cara yang berbeda untuk menginisialisasi struct, menetapkan nilai untuk variabel di dalamnya, dan juga bawaan pencetakan.
package main import "fmt" type Rectangle struct { length, width int name string } func main() { r1 := Rectangle{2, 1, "my_r1"} // menginialisasi nilai dalam urutan mereka yang didefinisikan dalam struct fmt.Println("Rectangle r1 is: ", r1) r2 := Rectangle{width:3, name:"my_r2", length:4} menginialisasi nilai dengan nama variable di beberapa urutan fmt.Println("Rectangle r2 is: ", r2) pr := new (Rectangle) // mendapatkan pointer ke jarak dengan kata kunci new (*pr).width = 6 //memasang nilai menggunakan notasi yang arahkan dengan pointer pr.length = 8 // Go automatically converts memasang nilai menggunakan nilai yang sama. disana adalah no-> operator atau seperti di c++ pr.name = "ptr_to_rectangle" fmt.Println("Rectangle pr as address is: ", pr) //Go menampilkan default atau struct fmt.Println("Rectangle pr as value is: ", *pr) // alamat dan nilai dibedakan dengan simbol & }
Rectangle r1 is: {2 1 my_r1}
Rectangle r2 is: {4 3 my_r2}
Rectangle pr as address is: &{8 6 ptr_to_rectangle}
Rectangle pr as value is: {8 6 ptr_to_rectangle}
Rectangle r2 is: {4 3 my_r2}
Rectangle pr as address is: &{8 6 ptr_to_rectangle}
Rectangle pr as value is: {8 6 ptr_to_rectangle}
Beberapa hal yang perlu diperhatikan di sini :
* Agan dapat menginisialisasi nilai-nilai dalam struct dengan menyebutkan hal itu dalam kurung kurawal sesuai urutan di mana mereka muncul, masing-masing dipisahkan dengan koma. r1: = Rectangle {2, 1, "my_r1"}
* Agan dapat menginisialisasi nilai dengan memberikan nama variabel dan nilainya dipisahkan oleh titik dua. r2: = Rectangle {width: 3, Nama: "my_r2", panjang: 4}
* Agan bisa mendapatkan pointer ke contoh struct yang baru dibuat dengan menggunakan kata kunci new.
* Pointer yang diperoleh, dapat digunakan dengan atau tanpa menggunakan operator * untuk mendapatkan variabel di dalamnya
* Go menyediakan mekanisme cetak default untuk struct berdasarkan nilai-nilainya.
- Enkapsulasi dan visibilitas struct dan variabel
Bahasa pemrograman lain menggunakan beberapa kata kunci seperti public, private, package, protected, dan lain-lain yang memungkinkan pengembang untuk menentukan visibilitas dan aksesibilitas variabel dalam konteks yang berbeda. Ane pikir semua itu benar-benar diperlukan sampai melihat pendekatan Go untuk itu. Pendekatan Go untuk visibilitas variabel dan aksesibilitas sangat sederhana bahwa Ane berpikir itu sangat konyol. Jadi, tanpa basa-basi bahwa jika huruf pertama adalah kapital, itu terlihat di luar paket.
sebagian kode:
type notExported struct { //struct ini terlihat hanya dalam paket seperti itu untuk memulai dengan huruf kecil. } type Exported struct { // variable memulai dengan huruf kapital, jadi kelihatan diluar paket variable ini notExportedVariable int // variable memulai dengan huruf kecil, jadi tidak kelihatan di luar paket variable ini ExportedVariable int //variable memulai dengan huruf kapital, jadi kelihatan diluar paket variable ini s string //tidak tersaring S string //tersaring }
Tidak ada komentar:
Posting Komentar