Membuat slice pada golang

Golang – Pengenalan dan cara menggunakan tipe data slice

Pada artikel sebelumnya kita telah belajar apa itu array data dan cara menggunakan array pada bahasa pemrogaman go atau golang. apabila anda belum mengikuti artikel sebelumnya saya sarankan anda untuk membaca artikel sebelumnya tentang Golang – Pengenalan dan cara membuat array. Dan artikel kali ini kita akan belajar tentang tipe data slice dan cara menggunakannya pada bahasa pemrogaman go.

Pengenalan slice

Apa itu slice, slice adalah potongan dari data array. Bisa di bilang jika slice mirip dengan array baik itu dari cara mengakses nya, slice juga memiliki banyak data seperti array yang membedakan nya adalah ukuran slice bisa berubah. Slice dan array selalu terkoneksi, dimana slice adalah data yang mengakseas sebagian atau seluruh data pada array.

Tipe data slice memiliki 3 data, yang pertama adalah pointer, length dan capacity berbeda dengan array yang hanya memiliki length. Kemudian apa itu pointer, pointer adalah penunjuk data pertama di array pada slice. Kemudian ada length, length adalah panjang dari isi slice dan terakhir terdapat capacity, capacity adalah kapasitas dari slice yang mana length tidak boleh lebih dari capacity.

Membuat slice

Untuk membuat slice kita dapat menggunakan beberapa function seperti dibawah ini

Membuat sliceKeterangan
array[low:high]Membuat slice dari arraay dimulai dari index low sampai index sebelum high
array[kow:]Membuat slice dari array dimulai dari index low sampai index terakhir pada array
array[:high]Membuat slice dari array dimulai dari index 0 sampai index sebelum high
array[:]Membuat slice dari array dimulai dari index 0 sampai index terakhir pada array
Membuat slice

Kemudian pada slice juga terdapat beberapa function yang dapat digunakan, berikut detailnya

OperasiKeterangan
len(slice)Untuk mendapatkan panjang slice
cap(skice)Untuk mendapatkan kapasitas slice
append(slice, data)Membuat slice baru dengan menambahkan data pada posisi terakhir slice, jika array penuh maka akan membuat array baru
make([]string, length, capacity)Membuat slice baru
copy(destination, source)Menyalin slice dari source ke destination
Function pada slice

Setelah mengetahui cara membuat dan function pada slice, selanjutnya mari kita coba membuat slice dari array month yang berisi bulan januari – desember.

package main

import "fmt"

func main() {
	var months = [...]string{
		"January", "February", "March", "April", "May", "June",
		"July", "August", "September", "October", "November", "December",
	}

	var slice1 = months[4:7]
	fmt.Println("slice1 :", slice1)
	fmt.Println("Len slice1 :", len(slice1))
	fmt.Println("Cap slice1 :", cap(slice1))
}

Pada code diatas kita telah membuat sebuah array month dan membuat slice dengan nama slice1 kemudian kita juga menampilkan / print isi sile, panjang slice dan kapasitas slice, untuk detailnya perhatikan gambar di bawah

Membuat slice pada golang
Membuat slice pada golang

Pada baris 6 kita membuat array dengan nama months yang berisi 12 data yaitu nama bulan dari januari – desember. Kemudian pada baris 11 kita membuat slice dengan nama slice1 yang beridi data index ke 4 sampai index ke 6 array months. Kemudian baris 12 kita menampilkan semua data slice, baris ke 13 kita menampilkan panjang slice dan terakhir pada baris ke 14 kita menampilkan kapasitas slice. Jika code diatas dijalankan maka outputnya akan seperti berikut

Output slice pada golang
Output slice pada golang

Pada output diatas menampilkan data slice dari May, June, July karena kita mengambil index ke 4 dan ke 6 pada array, kemudian panjang slice adalah 3 karena pada slice1 memang hanya berisi 3 data, yang terakhir kapasitas slice1 adalah 8 karena kita mengambil data array mulai dari index 4 sehinggan dari index 4 sampai index terakhir array berjumlah 8 data.

Setelah mencoba function len & cap, selanjutnya kita akan mencoba function appand yang dimana appand ini digunakan untuk membuat slice baru dari slice yang sudah ada dan menambahkan data baru pada akhir slice, jika array pada slice nya penuh maka append akan membuat array baru jadi jika kita merubah data pada slice baru maka data pada slice lama tidak akan berubah (kondisi ini hanya terjadi jika array pada slice lama penuh sehingga mengakibatkan slice membuat array baru). Berikut contohnya

package main

import "fmt"

func main() {
	var months = [...]string{
		"January", "February", "March", "April", "May", "June",
		"July", "August", "September", "October", "November", "December",
	}

	var slice2 = months[10:]
	fmt.Println("slice2 :", slice2)

	var slice3 = append(slice2, "Rendy")
	fmt.Println("slice3 :", slice3)
	slice3[1] = "Bukan December"
	fmt.Println("slice3 :", slice3)

	fmt.Println("slice2 :", slice2)
	fmt.Println("months :", months)
}

Kali ini setelah membuat array kita membuat slice2 yang dimulai dari index 10 – index terakhir array yaitu 11 maka slice2 hanya akan berisi 2 data dan kita juga membuat slice3 yang mana kita melakukan append dari slice2 dan menambah data baru yaitu “Rendy” pada titik ini array sudah penuh maka slice3 akan membuat array baru, yang mana jika array baru dibuat maka saat kita merubah data dari slice3 maka array months yang digunakan pada slice2 tidak akan berubah. Detailnya seperti gambar dibawah

Function append pada golang
Function append pada golang

Pada baris ke 11 kita membuat slice2 dari array months yangg dimulai dari index 10 – index terakhir 11 dengan demikian slice2 akan berisi data November & December. Kemudian di baris 14 kita membuat slice3 yang di append dari slice2 dan sekaligus ditambahkan data baru yaitu “Rendy”. Karena pada titik ini array months sudah tidak dapat menampung data lagi atau sudah full maka slice3 akan membuat array baru untuk menampung data nya.

Dengan demikian saat kita merubah isi data slice3 di baris 16 lebih tepat nya pada index 1 maka data array months tidak akan ikut berubah karena sebelumnya slice3 sudah membuat array baru. Perhatikan pada output baris 17 nantinya jika data index 1 sudah berubah tetapi saat kita print slice2 dan months di baris 19 & 20 data nya tidak berubah.

Output append pada golang
Output append pada golang

Selanjutnya kita akan mencoba membuat slice dari awal menggunakan function make, sederhana saja jika kita akan membuat slice baru menggunakan make maka kita hanya perlu mengetikkan make([]tipeData, length, capacity) Lebih detail nya seperti berikut

package main

import "fmt"

func main() {
	newSlice := make([]string, 2, 5)
	newSlice[0] = "Rendy"
	newSlice[1] = "Wijaya"

	fmt.Println("newSlice ", newSlice)
	fmt.Println("len ", len(newSlice))
	fmt.Println("cap :", cap(newSlice))
}

Pada code diatas kita membuat slice baru dengan nama newSlice dengan tipe data string, panjangnya 2 data dan kapasitas nya 5. Untuk penjelasan detailnya perhatikan gambar di bawah

Membuat slice dengan function make pada golang
Membuat slice dengan function make pada golang

Pada gambar diatas seperti biasa kita membuat slice pada baris 6 dengan nama newSlice kemudian pada baris 7 kita merubah data index 0 menjadi “Rendy” dan pada baris 8 kita merubah data index 1 menjadi “Wijaya”. Dan pada baris 10-12 kita melakukan print detail slice, panjang slice dan kapasitas slice.

Output slice dari fucntion make pada golang
Output slice dari fucntion make pada golang

Terakhir kita akan mencoba meng copy sebuah slice dengan function copy, penggunaan function ini cukup sederhana anda hanya perlu mengetikkan copy(destinationSlice, sourceSlice

package main

import "fmt"

func main() {
	newSlice := make([]string, 2, 5)
	newSlice[0] = "Rendy"
	newSlice[1] = "Wijaya"

	fmt.Println("newSlice :", newSlice)
	fmt.Println("len :", len(newSlice))
	fmt.Println("cap :", cap(newSlice))

	copySlice := make([]string, len(newSlice), cap(newSlice))
	copy(copySlice, newSlice)

	fmt.Println("copySlice :", copySlice)
	fmt.Println("len :", len(copySlice))
	fmt.Println("cap :", cap(copySlice))
}

Pada code di atas kita membuat slice baru dengan nama copySlice kemudian kita meng copy newSlice yang sudah di buat sebelumnya dan di copy ke copySlice

Menggunakan function copy slice pada golang
Menggunakan function copy slice pada golang

Pada gambar diatas perhatikan baris 14 dimana pada baris tersebut kita membuat slice baru dengan nama copySlice dan memiliki panjang dan kapasitas yang sama dengan newSlice yang sudah di buat sebelumnya. Kemudian barulah pada baris 15 kita melakukan copy slice dari newSlice ke copySlice dan bisa dilihat pada saat kita melakukan print pada baris 17-19 maka output nya akan sama.

Output function copy slice pada golang
Output function copy slice pada golang

Jadi hati-hati saat membuat array, jika kita ingin membuat array tapi kita salah saat mendeklarasikan nya bisa-bisa yang kita buat bukanlah array tetapi slice.

package main

import "fmt"

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

	fmt.Println("Ini array :", iniArray)
	fmt.Println("Ini slice :", iniSlice)
}

Saat membuat array kita wajib mengisikan panjang array nya di dalam kurun [Isi panjang array di dalam kurung] jika kita tidak yakin atau belum mengetahui panjang array yang akan di buat kita bisa menggunakan titik tiga di dalam kurung seperti [...]. Dan jika kita lupa atau tidak mengisikan panjang data di dalam kurung maka yan kita buat adalah slice.

Membuat array dan slice pada golang
Membuat array dan slice pada golang

Penutup

Pada artikel kali ini kita telah belajar cara membuat slice pada bahasa pemrogaman golang. Dan pada artikel selanjutnya saya akan membahas Tipe data map pada golang.

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

About Me

About Me

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam.

Social Profiles

Facebook