struktur
dan Interface
Structure digunakan
untuk mengelompokan sejumlah data yang mempunyai tipe data yang berbeda.
Variabel-variabel yang membentuk sebuah struktur dinamakan elemen struktur. Meskipun bagi kita untuk menulis program dengan menggunakan tipe data built-in Go tapi di beberapa titik itu akan menjadi sangat membosankan. Maka untuk Mempertimbangkan program yang
berinteraksi dengan bentuk sebagai berikut:
package main
import ("fmt"; "math")
func distance(x1, y1, x2, y2 float64) float64 {
a := x2 – x1
b := y2 – y1
return math.Sqrt(a*a + b*b)
}
func rectangleArea(x1, y1, x2, y2 float64) float64 {
l := distance(x1, y1, x1, y2)
w := distance(x1, y1, x2, y1)
return l * w
}
func circleArea(x, y, r float64) float64 {
return math.Pi * r*r
}
func main() {
var rx1, ry1 float64 = 0, 0
var rx2, ry2 float64 = 10, 10
var cx, cy, cr float64 = 0, 0, 5
fmt.Println(rectangleArea(rx1, ry1, rx2, ry2))
fmt.Println(circleArea(cx, cy, cr))
}
Dalam membuat program pada bahasa Go sangalah bagus
dengan menggunakan struct karena sebuh struct adalah tipe yang berisi field.
Misalnya kita mewakili Circle sebagai berikut
type Circle struct {
x float64
y float64
r float64
}Kita bisa membuat sebuah instance dari tipe Circle baru dalam berbagai cara:
var c Circle
Seperti dengan tipe data lain, ini akan membuat variabel Circle lokal yang secara default diatur ke nol. Untuk struct nol berarti masing-masing diatur sesuai nilai nol (0 untuk int, 0,0 untuk mengapung, "" untuk string, nil untuk pointer, dll) Kita juga dapat menggunakan fungsi baru:
c := new(Circle)
Hal ini mengalokasikan memori untuk semua field, menetapkan masing-masing untuk nilai nol dan mengembalikan pointer. (* Circle) memberika masing-masing nilai field dengan cara sebagai berikut:
c: = Circle {x: 0,
y: 0, r: 5}
c: = Circle {0, 0, 5}
Satu hal yang perlu diingat adalah bahwa argumen selalu disalin di Go. Jika kita berusaha untuk memodifikasi salah satu field dalam fungsi circleArea, itu tidak akan mengubah variabel asli. Karena ini kita akan biasanya menulis fungsi seperti ini:
func circleArea(c *Circle) float64 {
return math.Pi * c.r*c.r
}
Dan change main:
c := Circle{0, 0, 5}
fmt.Println(circleArea(&c))
Tidak ada komentar:
Posting Komentar