Akademi Manajemen Informatika

Tipe Data Slice

Slice merupakan sebuah tipe data yang agak rumit. Tipe data slice jarang ditemui dalam bahasa pemrograman lainnya. Slice merupakan potongan dari data array. Slice sendiri sangat mirip dengan tipe data array, Tetapi Kagak seperti array yang panjangnya Kagak dapat berubah, panjang data slice dapat berubah. Slice adalah data yang mengakses sebagian atau seluruh data array. Oleh karena itu, data slice selalu terhubung dengan data array.

Karena data slice terhubung dengan array, maka Engkau harus berhati-hati ketika Ingin melakukan perubahan. Perubahan yang Engkau lakukan pada array akan merubah data pada slice yang terhubung dengannya. Perubahan data pada slice akan merubah data array dan slice lain yang terhubung dengan array.

Slice Mempunyai tiga buah data Merukapan pointer (sebuah penunjuk data pertama pada array), length (panjang data slice, Kagak boleh lebih dari capacity), dan capacity (kapasitas dari slice).

Membangun Slice

Terdapat beberapa Metode yang Dapat kita gunakan Kepada Membangun data slice. Perhatikan tabel berikut ini:

Metode Keterangan
array[low:high] Membangun slice dimulai dari index low hingga sebelum index high
array[low:] Membangun slice dimulai dari index low hingga index terakhir dari array
array[:high] Membangun slice dimulai dari index 0 hingga index high
array[:] Membangun slice dimulai dari index 0 hingga index terakhir dari array
READ  Pengertian, Fungsi, Jenis, Metode Kerja, & Konfigurasi

Fungsi Pada Slice

Terdapat beberapa fungsi yang dapat digunakan Kepada memanipulasi slice antara lain sebagai berikut:

Fungsi Keterangan
len(slice) Mendapatkan panjang slice
cap(slice) Mendapatkan kapasitas slice
append(slice, data) Membangun slice baru dengan menambah data ke posisi terakhir slice. Kalau kapasitas penuh, maka akan Mekanis Membangun array baru
make([]TypeData, length, capacity) Membangun slice baru
copy(destination, source) Menyalin slice dari source ke destination

Ilustrasi Slice

Golang Slice

Dari ilustrasi di atas, terdapat array yang berisi nama buah. Kemudian kita Membangun slice dengan array[2:5] yang berarti dimulai dari index 2 hingga sebelum index 5. Maka, data yang Terdapat pada slice adalah Melon, Semangka, dan Jeruk.

Slice yang kita buat Mempunyai pointer dengan nilai 2 karena dimulai dari index ke 2. Length 3 Merukapan jumlah data yang kita dapatkan (index 2, 3, dan 4). Capacity 5 dihitung dari pointer hingga index terakhir array.

READ  Chief Operating Officer (COO) : Pengertian, Tugas, & Kualifikasi

Teladan Kode

package main

import "fmt"

func main() {
	var fruits = [...]string{
		"Apel",
		"Nanas",
		"Melon",
		"Semangka",
		"Jeruk",
		"Pepaya",
		"Anggur",
	}

	var slice = fruits[2:5]
	fmt.Println(slice)
	fmt.Println(len(slice))
	fmt.Println(cap(slice))
}

output:

[Melon Semangka Jeruk]
3
5

Append

Append adalah Metode Membangun slice dengan menambah data ke posisi terakhir slice. Kalau kapasitas penuh, maka akan Mekanis Membangun array baru. Sebagai Teladan, perhatikan kode berikut ini:

package main

import "fmt"

func main() {
	chars := [...]string{"A", "B", "C", "D", "E", "F"}

	charSlice1 := chars[4:]
	fmt.Println(chars)      // [A B C D E F]
	fmt.Println(charSlice1) //[E F]

	charSlice2 := append(charSlice1, "G")
	charSlice2[0] = "E Kembali"
	fmt.Println(charSlice2) // [E lagi F G]
	fmt.Println(chars)      // [A B C D E F]
}

output:

[A B C D E F]
[E F]
[E Kembali F G]
[A B C D E F]

Variabel charSlice1 Mempunyai kapasitas 2 dan sudah penuh, sehingga ketika kita melakukan append dan menambahkan huruf G maka akan dibuat array baru. Hal ini Dapat dibuktikan dengan mencoba merubah data pada charSlice2, setelah dilakukan Println variabel chars Kagak berubah. Berarti Surat keterangan charSlice2 bukan Kembali array chars yang lelet melainkan array yang baru dibuat karena kapasitas charSlice1 sudah penuh.

READ  #35: Pointer - Belajar Golang Dari Dasar

Make

Fungsi make digunakan Kepada Membangun slice dari awal tanpa menggunakan array yang sudah Terdapat sebelumnya. Sebagai Teladan, perhatikan kode berikut ini:

package main

import "fmt"

func main() {
	days := make([]string, 2, 6)
	days[0] = "Senin"
	days[1] = "Selasa"

	fmt.Println(days)
	fmt.Println(len(days))
	fmt.Println(cap(days))
}

output:

Copy

Fungsi copy digunakan Kepada Membangun salinan dari slice yang sudah Terdapat. Sebagai Teladan, perhatikan kode berikut ini:

package main

import "fmt"

func main() {
	days := make([]string, 2, 6)
	days[0] = "Senin"
	days[1] = "Selasa"
	fmt.Println(days)

	copyDays := make([]string, len(days), cap(days))
	copy(days, copyDays)
	fmt.Println(copyDays)
}

output:

[Senin Selasa]
[Senin Selasa]

Kepada melakukan copy pastikan ukuran slice destination sama agar data Kagak terpotong.

Berikutnya: #15 Tipe Data Map – Belajar Golang Dari Dasar