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.