Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

Cara Praktis Menggabungkan Slice di Go

1 min read .
Cara Praktis Menggabungkan Slice di Go

Kalau udah sering main Go, pasti nggak asing sama slice. Struktur ini fleksibel banget buat nampung kumpulan data. Tapi, kadang saya butuh menggabungkan beberapa slice jadi satu—misalnya lagi ngolah data dari beberapa sumber atau hasil query yang beda-beda.

Nah, ada beberapa cara buat ngelakuin itu. kita bakal bahas opsi yang simpel sampai yang lebih efisien.

1. Pakai append (cara paling gampang)

Cara yang paling sering dipakai adalah append. Tinggal tumpuk slice satu ke yang lain.

package main

import "fmt"

func main() {
	slice1 := []int{1, 2, 3}
	slice2 := []int{4, 5, 6}
	slice3 := []int{7, 8, 9}

	combined := append(slice1, slice2...)
	combined = append(combined, slice3...)

	fmt.Println(combined)
}

Output:

[1 2 3 4 5 6 7 8 9]

Kuncinya ada di ... (spread operator) biar elemen di-expand. Cara ini enak kalau slice yang digabung jumlahnya nggak terlalu banyak.

2. Pre-allocate dengan make + append

Kalau datanya gede, lebih hemat kalau kita alokasi kapasitas dulu biar Go nggak bolak-balik realokasi di belakang layar.

package main

import "fmt"

func main() {
	slice1 := []int{1, 2, 3}
	slice2 := []int{4, 5, 6}
	slice3 := []int{7, 8, 9}

	totalLen := len(slice1) + len(slice2) + len(slice3)
	combined := make([]int, 0, totalLen)

	combined = append(combined, slice1...)
	combined = append(combined, slice2...)
	combined = append(combined, slice3...)

	fmt.Println(combined)
}

Lebih efisien, karena kita udah siapin ruang sebesar total panjang slice gabungan.

3. Loop untuk jumlah slice dinamis

Kalau jumlah slice-nya nggak pasti (misalnya hasil fungsi return banyak slice), kita bisa pakai loop.

package main

import "fmt"

func main() {
	slices := [][]int{
		{1, 2, 3},
		{4, 5, 6},
		{7, 8, 9},
	}

	totalLen := 0
	for _, s := range slices {
		totalLen += len(s)
	}

	combined := make([]int, 0, totalLen)

	for _, s := range slices {
		combined = append(combined, s...)
	}

	fmt.Println(combined)
}

Ini fleksibel banget—mau gabung 2 slice, 10 slice, atau 100 slice sekaligus juga gampang.

Kesimpulan

  • append langsung → simpel, cocok buat slice kecil.
  • Pre-allocate → lebih efisien kalau slice besar.
  • Loop → solusi fleksibel buat jumlah slice yang dinamis.

Dengan tiga teknik ini, kamu bisa pilih mana yang paling pas sesuai kebutuhan.

Lihat Juga

chevron-up