Array

Array merupakan jenis tipe data aggregate di Golang yang mampu menampung beberapa value dengan tipe data yang sama dengan jumlah (length) tertentu. Kekurangan dari array adalah hanya bisa di isi value sesuai dengan length yang telah di deklarasikan. Untuk default value dari suatu array akan bergantung pada tipe data yang digunakan.

Contoh code array dengan tipe data string

package main

import (
	"fmt"
)

func main() {
	var names [3]string
	fmt.Println(names)

	names[0] = "Test1"
	names[1] = "Test2"
	names[2] = "Test3"
	// names[3] = "Test4" -> error karena melebihi length dari array
	fmt.Printf("%s %s %s \n", names[0], names[1], names[2])

	var values = [3]int{12, 13, 14}
	fmt.Println(values)
}
[  ]
Test1 Test2 Test3 
[12 13 14]

Contoh code array dengan tipe data interface kosong

package main

import "fmt"

var i1 any = 2
var i2 any = 2
var i3 any = 2
var i4 any = 2
var i5 any = 2

var a [10]interface{} = [10]interface{}{i1, i2, i3, i4, i5}

func main() {
    fmt.Println(a)
}
[2 2 2 2 2 <nil> <nil> <nil> <nil> <nil>]

Contoh code array dengan tipe data pointer

package main

import "fmt"

var num1 int = 2
var num2 *int = &num1
var num3 *int = &num1
var num4 *int = &num1

var a [10]*int = [10]*int{num2, num3, num4}

func main() {
    fmt.Println(a)
}
[0xbbb340 0xbbb340 0xbbb340 <nil> <nil> <nil> <nil> <nil> <nil> <nil>]

Jumlah value dan Kapasitas dari Array

Kapasitas merupakan tempat untuk menampung value, sementara length adalah berapa banyak kapasitas yang sudah diisi nilai. Kapasitas dari array akan selalu sama dengan jumlah value yang ada di dalam array.

package main

import "fmt"

func main() {
	arr := [5]int{1, 2, 3, 4, 5}
	fmt.Println(len(arr))
	fmt.Println(cap(arr))
}
5
5

Informasi tambahan

Suatu array misalkan arr1 akan disimpan dengan memory address yang berbeda dari value-value di dalam array tersebut. Sebagai contoh code di bawah ini, array arr1 disimpan pada memory address 0xc000014280, sementara value dalam array arr1 yaitu 1, 2, 3, dst disimpan dalam memory address 0xc00000e088.

package main
import "fmt"

func main() {
    arr1 := [10]int{1,2,3,4,5,6,7,8,9,10}
	arr2 := &arr1
    fmt.Printf("%p\n", arr2)
    for i := range a {
        val := &i
        fmt.Println(val)
    }
}
0xc000014280
0xc00000e088
0xc00000e088
0xc00000e088
0xc00000e088
0xc00000e088
0xc00000e088
0xc00000e088
0xc00000e088
0xc00000e088
0xc00000e088

Add, Update dan Delete Value di Array

Untuk delete value tidak bisa dilakukan di array dan hanya bisa mengganti value dari index yang ingin di delete dengan default value dari tipe data yang digunakan

package main

import (
	"fmt"
)

func main() {
	var arr = [5]int{1, 2, 3, 4}
	// add
	arr[4] = 5
	// update
	arr[4] = -5
	fmt.Println(arr)
	// detele (default value integer = 0)
	arr[4] = 0
	fmt.Println(arr)
}
[1 2 3 4 -5]
[1 2 3 4 0]

Last updated