All posts
Fundamental Golang #12Part 12 of 13

Fundamental Golang #12: Tipe Data Slice

2 min read
Fundamental Golang
Series: Fundamental Golang13 parts
  1. 1Program Hello World
  2. 2Tipe Data Number
  3. 3Tipe Data String
  4. 4Tipe Data Boolean
  5. 5Variable
  6. 6Constant
  7. 7Konversi Tipe Data
  8. 8Operasi Matematika
  9. 9Operasi Perbandingan
  10. 10Type Declarations
  11. 11Tipe Data Array
  12. 12Tipe Data Slice
  13. 13Tipe Data Map

Fundamental Golang #12: Tipe Data Slice

Tipe data Slice dalam golang sangat mirip dengan array. yang membedakannya, yaitu ukuran Slice yang bisa berubah.

Sementara dalam Array, ukuran data yang didefinisikan pada saat inisialisasi tidak dapat berubah ubah, Slice memberikan fleksibilitas lebih dengan kapasitasnya untuk mengubah ukuran data.

Satu hal yang perlu dipahami adalah bahwa Slice selalu terkait langsung dengan Array. Dimana Slice merupakan struktur data yang mengakses dan memanipulasi sebagian atau bahkan seluruh data yang ada dalam Array.


Membuat Slice Dari Array

Membuat SliceKeterangan
array[low:high]Membuat slice dari array dimulai index low sampai index sebelum high
array[low:]Membuat slide dari array dimulai index low sampai index akhir di array
array[:high]Membuat slice dari array dimulai index 0 sampai index sebelum high
array[:]Membuat slice dari array dimulai index 0 sampai index akhir di array

Berikut Contoh membuat slice dari array

GO
package main

import "fmt"

func main() {

// mendeklarasikan variabel months bertipe array
	var months = [...]string{"Januari",
		"Febuari",
		"Maret",
		"April",
		"Mei",
		"Juni",
		"Juli",
		"Agustus",
		"September",
		"Oktober",
		"November",
		"Desember",
	} 


/*
 mendefinisikan slice dari array "months". 
 Slice ini dimulai dari indeks ke 4 (bulan Mei) 
 dan berakhir tepat sebelum indeks ke 7 (bulan Agustus), 
 sehingga mencakup hanya bulan Mei, Juni, dan Juli.
*/ 
	
var slice = months[4:7]

fmt.Println(slice) // Output : [Mei Juni Juli]

}

Function Slice

OperasiKeterangan
len(slice)Untuk mendapatkan panjang slice
cap(slice)Untuk mendapat kapasitas (maksimal panjang slice)
append(slice, data)Membuat slice baru dengan menambah data ke posisi terakhir slice, jika kapasitas sudah penuh, maka akan membuat array baru
make([]TypeData, length, capacity)Membuat slice baru
copy(destination, source)Menyalin slice dari source ke destination
GO
package main

import "fmt"

func main() {

	// mendeklarasikan variabel months bertipe array
	var months = [...]string{"Januari",
		"Febuari",
		"Maret",
		"April",
		"Mei",
		"Juni",
		"Juli",
		"Agustus",
		"September",
		"Oktober",
		"November",
		"Desember",
	}

	var slice = months[4:7]
	fmt.Println(slice)


	// Mendapatkan panjang slice
	fmt.Println(len(slice)) // Output : 3
	

	// Mendapatkan capacity slice
	fmt.Println(cap(slice)) // Output : 8


	//Menambahkan data ke slice
	var slice2 = append(slice, "Bulan Baru")
	fmt.Println(slice2) // Output : [Mei, Juni, Juli, Bulan Baru]


	//Membuat slice tanpa array 
	var name = make([]string, 2, 5) // make([]tipedata, size, capacity)
	name[0] = "Hajid"
	name[1] = "Joko"
	fmt.Println(name) // Output : [Hajid, Joko]


	//Menyalin slice nama 
	var name_copy = make([]string, len(name), cap(name))
	copy(name_copy, name)

	fmt.Println(name_copy) // Output : [Hajid, Joko]


}

Hati-Hati Saat Membuat Array

• Saat membuat Array, kita harus berhati-hati, jika salah, maka yang kita buat bukanlah Array, melainkan Slice

GO
package main

import (
	"fmt"
)

func main() {

	iniArray := [...]int{1, 2, 3, 4, 5}
	iniSlice := []int{1, 2, 3, 4, 5}
	fmt.Println(iniArray)
	fmt.Println(iniSlice)

}