Menu
CoddyTech

Salin Slice

Pelajaran 13 dari 21 dalam kursus Slice dan Map di Go di Coddy.

Di Go, ada beberapa fungsi bawaan yang bisa kita gunakan dengan slice, dan kita sudah menggunakan salah satunya di pelajaran sebelumnya, yaitu fungsi <strong>append</strong>. Fungsi ini memungkinkan kita menambahkan elemen ke slice yang sudah ada. Kita menyebut fungsi-fungsi ini fungsi pembantu. Kamu bisa menambahkan hal ini ke perbedaan antara array dan slice di Go: array tidak memiliki fungsi-fungsi ini.

Di pelajaran ini, kita akan membahas fungsi <strong>copy</strong>, yang memungkinkan kita menyalin slice. Cara kerjanya seperti ini:

str := []string{"Python", "Golang", "Java", "TypeScript"}
newStr := make([]string, 4)
copy(newStr, str)
fmt.Println(newStr)

Hasilnya akan seperti ini:

[Python Golang Java TypeScript]

Dengan fungsi <strong>copy</strong>, kita menyalin elemen dari slice <strong>str</strong> ke slice <strong>newStr</strong>. Sintaksnya seperti ini: <strong>copy(destination, source)</strong>.

Sekarang, bagaimana jika kapasitas slice baru lebih kecil daripada slice sumber? Mari kita lihat contohnya:

str := []string{"Python", "Golang", "Java", "TypeScript"}
newStr := make([]string, 3)
copy(newStr, str)
fmt.Println(newStr)

Jika kita menjalankannya, hasilnya akan seperti ini:

[Python Golang Java]

Karena kapasitas slice baru adalah 3, hanya ada ruang untuk 3 elemen.

Mari kita lihat contoh dengan kondisi sebaliknya:

str := []int{23, 34, 56, 77}
newStr := make([]int, 6)
copy(newStr, str)
fmt.Println(newStr)

Di sini, kapasitas slice baru lebih besar daripada slice sumber, jadi elemen-elemennya akan disalin, sedangkan sisanya akan berisi nilai bawaan, yaitu 0 untuk tipe data int:

[23 34 56 77 0 0]
challenge icon

Tantangan

Mudah

Tulis program yang mengambil dua slice dan menggabungkannya menjadi slice baru, lalu mencetaknya ke layar.

Dalam kode yang diberikan, kita mendefinisikan dua slice integer.

Di sini kamu perlu menggunakan operator slice bersama fungsi copy.

Lihat petunjuk jika kamu membutuhkan bantuan lebih lanjut.

Coba sendiri

package main

import (
	"fmt"
)

func main() {
    // Dua slice ini, jangan ubah!
	str := []int{1, 2, 3, 4}
	str2 := []int{5, 6, 7, 8}
	// Buat slice baru 
 
    // Salin elemen
 
	// Salin dengan operator slice
	 
    // Cetak slice baru
	fmt.Println()

}

Semua pelajaran di Slice dan Map di Go

Latihan sendiri: Compiler Go online