Hampir semua bahasa pemrograman memiliki struktur bahasa yang disebut dengan array. Tetapi dalam penggunaan bahasanya sangat bervariasi. Oke langsung aja gan... ^_^, array adalah sebuah ukuran dinamis yang dapat diubah untuk menyimpan/mengoleksi benda-benda... dalam array, nilai disimpan dalam blok-blok memori. Dalam Go, array adalah struktur data dengan tingkat yang sangat rendah. Seperti bahasa C, array hanya berisi blok memori. Tetapi perlu diingat bahwa dalam bahasa Go tidak diijinkan melakukan pointer aritmatika. Dalam Go, pointer dan array adalah jenis yang berbeda. Sehingga dalam penggunaan array dan pointer tidak dapat sembarangan.
Contoh penggunaanya sebagai berikut:
package main
import "fmt"
func main(){
var a[2]int
for i:=0;i<15;i++{
fmt.Printf("element : %d %d",i,a[i])
}
}
Outputnya adalah:
element:0 0
element:1 0
panic:runtime error:index out of range
Contoh diatas merupakan program sederhana untuk mengakses array dan kemudian mencetak output yang sebenarnya melebihi kapasitas variabel penyimpanan....
- Penulisan Array
var a1 [100]int
var matrix [4][4]float64
a2 := [...]int{1, 1, 2, 3, 5}
Seperti disebutkan sebelumnya, jenis array Go adalah kombinasi dari ukuran dan jenis elemen. Ini berarti bahwa ukuran dari array harus diketahui pada waktu kompilasi. Ketiga bentuk deklarasi array pada contoh di atas menunjukkan bagaimana untuk membuat sebuah array. Array dapat berisi tipe, termasuk pointer array. Contoh menciptakan array pada array untuk nilai floating-point. Semua array adalah nilai-nilai. Jika menetapkan dari satu array ke array yang lain, Berarti mendapatkan salinan dari array lain itu.
Contoh:
package main
import "fmt"
func main() {
a1 := [...]int{1, 2}
a2 := a1
a2[0] = 3
fmt.Printf("%d %d\n", a1[0], a2[0])
}
Outputnya adalah:
1 3
- Slicing Array
var a1 [100]int
firstHalf := a1[:50]
secondHalf := a1[50:]
middle := a1[25:75]
all := a1[:]
Jika Agan pernah belajar bahasa C, Agan pasti pernah melihat idiom umum yang dipakai seperti melewati pointer dan panjang sebagai argumen untuk fungsi. Hal ini memungkinkan Agan untuk mengijinkan ukuran array yang sewenang-wenang pada Fungsi. Sebuah cara khusus dapat dengan mudah membuat Agan melewati ukuran yang sebenarnya, dan kemudian Agan mengembalikan ke korupsi memori/manipulasi memori. Jika Agan sudah menulis kode JavaScript dengan Ekstensi WebGL, maka ini sudah familiar untuk Agan: Slice Go secara konseptual mirip dengan ArrayBufferView object, sementara Go array mirip dengan ArrayBuffers. Jika Agan mengkompilasi dengan gccgo, maka Agan dapat memeriksa pelaksanaan slice dengan mudah. Ini hanya struktur C yang menyimpan pointer ke array, ukuran, dan kapasitasnya.
Contoh program:
func main() {
s0 := make([]int, 2, 10)
s1 := append(s0, 2)
s2 := append(s0, 3)
fmt.Printf("Element: %d %d\n", s1[2], s2[2])
s0 = []int{0, 1}
s1 = append(s0, 2)
s2 = append(s0, 3)
fmt.Printf("Element: %d %d\n", s1[2], s2[2])
}
Outputnya adalah:
Element: 3 3
Element: 2 3
func truncate(slice []int) []int {
var s []int = make([]int, len(slice))
copy(s, slice)
return s
}
Slice hanya sekilas tentang array. Ini berarti bahwa slice sangat mudah dalam pembuatannya. Ini adalah operasi waktu-konstan, tergantung pada ukuran slice. Sebaiknya, membuat salinan dari array linear waktu operasi, dan sebaiknya dihindari.
- Truncating Slices
func truncate(slice []int) []int {
var s []int = make([]int, len(slice))
copy(s, slice)
return s
}
Slice hanya sekilas tentang array. Ini berarti bahwa slice sangat mudah dalam pembuatannya. Ini adalah operasi waktu-konstan, tergantung pada ukuran slice. Sebaiknya, membuat salinan dari array linear waktu operasi, dan sebaiknya dihindari.
- Pengulangan menggunakan Array
package main
import "fmt"
import "time"
func main() {
var a [100]int
// The slow way
for i := 1 ; i < 10 ; i++ {
fmt.Printf("Element %d is %d\n", i, a[i])
}
// The fast way
subrange := a[1:10]
for i, v := range subrange {
fmt.Printf("Element: %d %d\n", i, v)
}
// The parallel way
for i, v := range subrange {
go fmt.Printf("Element: %d %d\n", i, v)
}
time.Sleep(10000000)
}
Outputnya adalah:
Element 1 is 0
Element 2 is 0
Element 3 is 0
Element 4 is 0
Element 5 is 0
Element 6 is 0
Element 7 is 0
Element 8 is 0
Element 9 is 0
Element: 0 0
Element: 1 0
Element: 2 0
Element: 3 0
Element: 4 0
Element: 5 0
Element: 6 0
Element: 7 0
Element: 8 0
Element: 0 0
Element: 1 0
Element: 2 0
Element: 3 0
Element: 4 0
Element: 5 0
Element: 6 0
Element: 7 0
Element: 8 0
Tidak ada komentar:
Posting Komentar