golang_5

21
V (Slice dan Map)

Upload: dimas-prawira

Post on 13-Apr-2017

21 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: GoLang_5

V(Slice dan Map)

Page 2: GoLang_5

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

Apa yang kita pelajari?1. Slice2. Inisialisasi Slice3. Slice dan Array4. Operasi pada Slice5. Map6. Inisialisasi Map7. Operasi pada Map

Page 4: GoLang_5

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

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

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

Slice dan Array• Array adalah kumpulan nilai atau elemen, sedang slice adalah

referensi tiap elemen tersebut.

Page 8: GoLang_5

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

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

• 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

• 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

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

• 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

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

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

• 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

• 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

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

• len()• Fungsi len() digunakan pada map untuk mengembalikan jumlah item.

Page 20: GoLang_5

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

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"])}