Array di golang memiliki perlakuan yang sedikit berbeda dibanding bahasa pemrograman lain. Data yang dikelompokkan menggunakan array panjangnya tetap dan datanya hanya bisa menyimpan satu jenis data yang sama. Misal, jika kita membuat sebuah array untuk menyimpan data string maka tidak dapat menyimpan data lain selain string.
Mendefinisikan dan Mengelompokan Data Array
Contoh disini kita membuat sebuah array untuk menyimpan tiga data, maka data yang bisa dikelompokkan pada array tersebut hanya tiga, data index 0 sampai dengan 2.
package main
import "fmt"
func main() {
//mendefinisikan array
var nama [3]string
// mengelompokan data
nama[0] = "Jaket"
nama[1] = "Kaos"
nama[2] = "Kemeja"
fmt.Println(nama)
}
Menggunakan Sintak Array Literal
Kita juga bisa mendefinisikan sekaligus mempopulasikan data sebagai berikut:
package main
import "fmt"
func main() {
// mendefinisikan dan mengelompokkan data
nama:=[3]string{"Jaket","Kaos","Kemeja"}
fmt.Println(nama)
}
Mengakses Data Pada Array
Untuk mengakses data pada sebuah array kita perlu menentukan index elemen data yang akan diakses.
package main
import "fmt"
func main() {
// mendefinisikan dan mengelompokkan data
nama:=[3]string{"Jaket","Kaos","Kemeja"}
fmt.Println(nama)
//mengakses data
fmt.Printf("Data index 0: %s\n", nama[0])
fmt.Printf("Data index 1: %s\n", nama[1])
fmt.Printf("Data index 2: %s\n", nama[2])
}
Memahami Jenis Array di golang
Jenis dari suatu array merupakan adalah kombinasi dari ukuran panjang array dan jenis data yang digunakan.
Jika ada dua array yang digunakan untuk mengelompokan tipe data yang sama,tapi panjang ukuran panjang arraynya berbeda, maka dua array tersebut sudah berbeda pula jenisnya.
package main
import "fmt"
func main() {
//jenis array panjang 3
nama := [3]string{"Jaket", "Kaos", "Kemeja"}
fmt.Println(nama)
// jenis array panjang 4
var array2 [4]string
array2 = nama
fmt.Println(array2)
}
Contoh diatas kita memiliki dua array yang jenisnya berbeda yaitu nama
dan array2
, jika kita mencoba menyalin nilai array nama
kedalam array array2
, maka kompiler akan menampilkan pesan error jika program diatas di kompile walaupun kelompok tipe datanya sama string
.
# command-line-arguments
collections/array/main.go:11:11: cannot use nama (variable of type [3]string) as type [4]string in assignment
Menentukan Panjang Array Secara Eksplisit
Jika kamu ingin kompiler yang menentukan panjang arraynya maka kamu bisa mengganti panjang array menjadi tiga titik [...]
, dan pada saat program dikompile, kompiler akan menentukan panjangnya sesuai jumlah data yang kamu kelompokkan dalam array tersebut.
package main
import "fmt"
func main() {
nama := [...]string{"Jaket", "Kaos", "Kemeja"}
array2 := [...]string{"Peci", "Blangkon"}
fmt.Println(nama)
fmt.Println(array2)
}
Pada saat di kompile variabel nama
jenisnya berupa array [3]string
dan array2
adalah [2]string
.
Memahami Nilai Array
Array pada golang secara default diperlakukan sebagai nilai daripada referensi, jadi ketika kita memberikan array pada sebuah variabel baru, maka variabel baru menyalin array dan nilainya.
package main
import "fmt"
func main() {
// jenis array panjang 3
nama := [3]string{"Jaket", "Kaos", "Kemeja"}
//salinan
array2 := nama
// Data array nama dirubah
nama[0] = "Sweater"
fmt.Println(nama)
fmt.Println(array2)
Jika ingin menggunakannya sebagai referensi, maka kita bisa menggunakan pointer seperti contoh berikut ini.
package main
import "fmt"
func main() {
// jenis array panjang 3
nama := [3]string{"Jaket", "Kaos", "Kemeja"}
//salinan
array2 := &nama
// Data array nama dirubah
nama[0] = "Sweater"
fmt.Println(nama)
fmt.Println(*array2)
Membandingkan array
Untuk membandingkan array kita bisa menggunakan operator sama dengan ==
atau tidak sama dengan !=
.
package main
import "fmt"
func main() {
A := [2]int{1, 2}
B := [2]int{4, 5}
fmt.Println("Array A sama dengan B :", A == B)
fmt.Println("Array A tidak sama dengan B :", A != B)
}
Kedua array sama jika jenisnya sama dan nilai setiap urutan elemennya sama. Jadi jika program diatas dijalankan hasilnya:
Array A sama dengan B : false
Array A tidak sama dengan B : true
Enumerasi Nilai Array
Jika kita memiliki array yang panjang datanya cukup banyak untuk diakses dan ditampilkan kita bisa menggunakan perulangan for
dan range
.
Contoh menggunakan perulangan for
:
package main
import "fmt"
func main() {
angka := [...]int{2, 3, 4, 2, 2, 122, 345, 774, 323,
2442, 232, 32112, 123567, 899, 4, 3, 23, 44}
for i := 0; i < len(angka); i++ {
fmt.Printf("Data angka[%d] = %d\n", i, angka[i])
}
}
Contoh menggunakan range
:
package main
import "fmt"
func main() {
angka := [...]int{2, 3, 4, 2, 2, 122, 345, 774, 323,
2442, 232, 32112, 123567, 899, 4, 3, 23, 44}
for index, nilai := range angka {
fmt.Printf("Data angka[%d] = %d\n", index, nilai)
}
}
Array Multidimensi
Array di golang berupa array satu dimensi, akan tetapi bisa digabungkan menjadi array multidimensi.
package main
import "fmt"
func main() {
// array dua dimensi
koordinat := [3][3]int{
{2, 3, 6},
{5, 7, 4},
{9, 0, 2}}
// Mengakses nilai
fmt.Println("data koordinat[2][1]=",koordinat[2][1],"\n")
// mengubah nilai
koordinat[2][1]=19
for x, arrayY := range koordinat {
for y, nilaiy := range arrayY {
fmt.Printf("Nilai koordinat[%d][%d] = %d\n", x, y, nilaiy)
}
}
}
Pada contoh diatas kita membuat sebuah array dua dimensi dimana variabel koordinat
merupakan sebuah array yang memiliki 3
kapasitas data untuk menyimpan data bertipe array [3]int
.