golang_5
TRANSCRIPT
![Page 1: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/1.jpg)
V(Slice dan Map)
![Page 2: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/2.jpg)
Roadmap pembelajaran Go
- If - else- Switch - Case
- For
Array
IIIII
- Standar Lib Go- Variabel
- Konstanta- Tipe Data- Operator
IV
V...
API
Slice dan Map
![Page 3: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/3.jpg)
Apa yang kita pelajari?1. Slice2. Inisialisasi Slice3. Slice dan Array4. Operasi pada Slice5. Map6. Inisialisasi Map7. Operasi pada Map
![Page 4: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/4.jpg)
Tujuan pembelajaranPoin - poin yang kita harap dapatkan pada sesi ini :
Pengetahuan
• Mengetahui slice dan map pada Go
• Mengetahui cara inisialisasi slice dan map pada Go
• Mengetahui perbedaan antara slice dan array
• Mengetahui operasi yang bisa digunakan pada slice dan map
Kemampuan
• Dapat menggunakan slice dan map di Go
• Dapat menggunakan operasi pada slice dan map di Go
![Page 5: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/5.jpg)
Slice• Slice adalah referensi elemen array. Slice bisa dibuat, atau bisa juga
dihasilkan dari manipulasi sebuah array ataupun slice lainnya.• Perubahan data di tiap elemen slice akan berdampak pada slice lain
yang memiliki alamat memori yang sama.
![Page 6: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/6.jpg)
Inisialisasi Slice• Cara membuat slice mirip seperti pada array, letak perbedaannya
tidak perlu mendefinisikan jumlah elemen ketika awal deklarasi.
var fruits = []string{"apple", "grape", "banana", "melon"}fmt.Println(fruits[0]) // "apple"
![Page 7: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/7.jpg)
Slice dan Array• Array adalah kumpulan nilai atau elemen, sedang slice adalah
referensi tiap elemen tersebut.
![Page 8: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/8.jpg)
Operasi pada Slice• len()• Fungsi len() digunakan untuk menghitung lebar slice yang ada.
• cap()• Fungsi cap() digunakan untuk menghitung lebar maksimum/kapasitas slice.
var fruits = []string{"apple", "grape", "banana", "melon"}fmt.Println(len(fruits)) // 4
![Page 9: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/9.jpg)
var fruits = []string{"apple", "grape", "banana", "melon"}fmt.Println(len(fruits)) // len: 4fmt.Println(cap(fruits)) // cap: 4
var aFruits = fruits[0:3]fmt.Println(len(aFruits)) // len: 3fmt.Println(cap(aFruits)) // cap: 4
var bFruits = fruits[1:4]fmt.Println(len(bFruits)) // len: 3fmt.Println(cap(bFruits)) // cap: 3
![Page 10: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/10.jpg)
• Variabel fruits disiapkan di awal dengan jumlah elemen 4. Maka fungsi len(fruits) dan cap(fruits) akan menghasilkan angka 4.
• Variabel aFruits dan bFruits merupakan slice baru berisikan 3 buah elemen milik slice fruits. Variabel aFruits mengambil elemen index 0, 1, 2; sedangkan bFruits 1, 2, 3.
• Fungsi len() menghasilkan angka 3, karena jumlah elemen kedua slice ini adalah 3. Tetapi cap(aFruits) menghasilkan angka yang berbeda, yaitu 4 untuk aFruits dan 3 untuk bFruits.
Kode Output len() cap()
fruits[0:4] [buah, buah, buah, buah] 4 4
aFruits[0:3] [buah, buah, buah, - ] 3 4
bFruits[1:3] - [buah, buah, buah]
![Page 11: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/11.jpg)
• append()• Fungsi append() digunakan untuk menambahkan elemen pada slice. Elemen baru tersebut diposisikan setelah indeks
paling akhir.
• Ketika jumlah elemen dan lebar kapasitas adalah sama (len(fruits) == cap(fruits)), maka elemen baru hasil append() merupakan referensi baru.
• Ketika jumlah elemen lebih kecil dibanding kapasitas (len(fruits) < cap(fruits)), elemen baru tersebut ditempatkan kedalam cakupan kapasitas, menjadikan semua elemen slice lain yang referensi-nya sama akan berubah nilainya.
var fruits = []string{"apple", "grape", "banana"}var cFruits = append(fruits, "papaya")
fmt.Println(fruits) // ["apple", "grape", "banana"]fmt.Println(cFruits) // ["apple", "grape", "banana", "papaya"]
![Page 12: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/12.jpg)
package main
import "fmt"
func main(){ var fruits = []string{"apple", "grape", "banana"} var bFruits = fruits[0:2]
fmt.Println(cap(bFruits)) // 3 fmt.Println(len(bFruits)) // 2
fmt.Println(fruits) // ["apple", "grape", "banana"] fmt.Println(bFruits) // ["apple", "grape"]
var cFruits = append(bFruits, "papaya")
fmt.Println(fruits) // ["apple", "grape", "papaya"] fmt.Println(bFruits) // ["apple", "grape"] fmt.Println(cFruits) // ["apple", "grape", "papaya"]}
![Page 13: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/13.jpg)
• copy(x1, x2)• Fungsi copy() digunakan untuk men-copy elemen slice tujuan (x2), untuk
digabungkan dengan slice target (x1).
var fruits = []string{"apple"}var aFruits = []string{"watermelon", "pinnaple"}
var copiedElemen = copy(fruits, aFruits)
fmt.Println(fruits) // ["apple", "watermelon", "pinnaple"]fmt.Println(aFruits) // ["watermelon", "pinnaple"]fmt.Println(copiedElemen) // 1
![Page 14: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/14.jpg)
Map• Map adalah tipe data asosiatif pada Go. Map menggunakan format
key-value, artinya setiap data (atau value) yang disimpan, disiapkan juga key-nya. Key tersebut harus unik, karena digunakan sebagai penanda (atau identifier) untuk pengaksesan data atau item yang tersimpan.• Nilai default variabel map adalah nil// format inisialisasi tipe data map //
var <nama variable> map[<key>]<value>
![Page 15: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/15.jpg)
var chicken = map[string]int{}
chicken["januari"] = 50chicken["februari"] = 40
fmt.Println("januari", chicken["januari"]) // januari 50fmt.Println("mei", chicken["mei"]) // mei 0
![Page 16: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/16.jpg)
• Nilai variabel bertipe map bisa didefinisikan di awal, caranya dengan menambahkan kurung kurawal setelah tipe data, lalu menuliskan key dan value didalamnya.
Inisialisasi map
// format inisialisasi tipe data map //var <nama variable> map[<key>]<value>{}
// cara vertikal //var chicken1 = map[string]int{"januari": 50, "februari": 40}
// cara horizontal //var chicken2 = map[string]int{ "januari": 50, "februari": 40,}
![Page 17: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/17.jpg)
• Key dan value dituliskan dengan pembatas tanda titik dua (:). Sedangkan tiap itemnya dituliskan dengan pembatas tanda koma (,). Khusus deklarasi dengan gaya vertikal, tanda koma perlu dituliskan setelah item terakhir.
• Variabel map bisa diinisialisasi dengan tanpa nilai awal, caranya cukup menggunakan tanda kurung kurawal atau bisa juga dengan menggunakan keyword make dan new.
// cara inisialisasi tipe data map //var chicken3 = map[string]int{}var chicken4 = make(map[string]int)var chicken5 = *new(map[string]int)
![Page 18: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/18.jpg)
Operasi pada Map• delete()• Fungsi delete() digunakan untuk menghapus item dengan key tertentu pada
variabel map.
var chicken = map[string]int{"januari": 50, "februari": 40}
fmt.Println(len(chicken)) // 2fmt.Println(chicken)
delete(chicken, "januari")
fmt.Println(len(chicken)) // 1fmt.Println(chicken)
![Page 19: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/19.jpg)
• len()• Fungsi len() digunakan pada map untuk mengembalikan jumlah item.
![Page 20: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/20.jpg)
Deteksi item dengan key• Cara untuk mengetahui atau mencari sebuah value pada map dengan
menggunakan atau memanfaatkan key-nya.
// format deteksi item dengan key //var <value>, <bool> = <variablemap>[<key>]
// sample //var chicken = map[string]int{"januari": 50, "februari": 40}var value, isExist = chicken["mei"]
if isExist { fmt.Println(value)} else { fmt.Println("data tidak ditemukan")}
![Page 21: GoLang_5](https://reader035.vdocuments.pub/reader035/viewer/2022062523/58999fa91a28ab30688b495f/html5/thumbnails/21.jpg)
Map dan Slice• Tipe data map bisa juga dikombinasikan dengan slice, biasa digunakan
untuk menyimpan misalkan data-data pelanggan, dll.
var chickens = []map[string]string{ {"name": "chicken blue", "gender": "male"}, {"name": "chicken red", "gender": "male"}, {"name": "chicken yellow", "gender": "female"},}
for _, chicken := range chickens { fmt.Println(chicken["gender"], chicken["name"])}