For
Perulangan pada golang hanya operasi for saja tidak punya foreach, while, do, until tetapi dengan menggunakan for ini semua operasi dalam aritmatika ataupun algoritma sudah bisa dilakukan. Misalkan contoh dasar kita akan mengeluarkan bilangan/angka dari 0-1. Maka code-nya seperti ini
1package main
2
3import "fmt"
4
5func main() {
6 for i := 1; i <= 10; i++ {
7 fmt.Println(i)
8 }
9} 1$ go run golang-basic/06-structure/perulangan-angka.go
21
32
43
54
65
76
87
98
109
1110If … else …
Kondisional pada umumnya biasanya menggunakan if ... else. Dan hematnya code golang itu tidak perlu ada kurung tutup dan kurung buka yang biasanya program yang lain harus menggunakan itu. Contoh program kondisional seperti ini
1package main
2
3import "fmt"
4
5func main() {
6 for i := 1; i <= 10; i++ {
7 if i%2 == 0 {
8 fmt.Println(i, " Genap")
9 } else {
10 fmt.Println(i, " Ganjil")
11 }
12 }
13}Switch
Kondisional program juga bisa menggunakan switch yang mana lebih mudah untuk satuan pengecekan. Bila lebih complex suatu kondisi program lebih bisa dipahami menggunakan if ... else ... saja.
Berikut ini contoh untuk switch pada program untuk mengeluarkan nama indonesia dalam bahasa.
1package main
2
3import "fmt"
4
5func main() {
6 for i := 1; i <= 10; i++ {
7 switch i {
8 case 1:
9 fmt.Println(i, " Satu")
10 case 2:
11 fmt.Println(i, " Dua")
12 case 3:
13 fmt.Println(i, " Tiga")
14 case 4:
15 fmt.Println(i, " Empat")
16 case 5:
17 fmt.Println(i, " Lima")
18 case 6:
19 fmt.Println(i, " Enam")
20 case 7:
21 fmt.Println(i, " Tujuh")
22 case 8:
23 fmt.Println(i, " Delapan")
24 case 9:
25 fmt.Println(i, " Sembilan")
26 case 10:
27 fmt.Println(i, " Sepuluh")
28 default:
29 fmt.Println(i, " Tidak terdeteksi")
30 }
31 }
32}Arrays
Penampung data yang biasanya berurutan dengan penampung yang sudah ditentukan. Biasanya jika ingin mengisi data array kita perlu definisikan terlebih dahulu berapa data yang akan ditampun dalam suatu array tersebut.
Misalkan kita tulis program seperti dibawah ini
1 var x [5]intx tersebut pada posisi terakhir (index ke-4). Maka program akan seperti ini.1package main
2
3import "fmt"
4
5func main() {
6 var x [5]int
7 x[4] = 100
8 fmt.Println(x)
9}1$ go run golang-basic/06-structure/array-structures.go
2[0 0 0 0 100]indexContoh Program 2
Kita akan menjumlakan semua element dari suatu array. Maka program-nya seperti ini
1func main() {
2 var x [5]float64
3 x[0] = 98
4 x[1] = 93
5 x[2] = 77
6 x[3] = 82
7 x[4] = 83
8 var total float64 = 0
9 for i := 0; i < 5; i++ {
10 total += x[i]
11 }
12 fmt.Println(total)
13}1 x := [5]float64{ 98, 93, 77, 82, 83 }Slice
Slice adalah segmen dari array. Seperti array, irisan dapat diindeks dan memiliki panjang. Tidak seperti array, panjang ini diizinkan untuk berubah. Berikut adalah contoh program:
1 var x []float64make1 x := make([]float64, 5)1package main
2
3import "fmt"
4
5func main() {
6 slice1 := []int{1, 2, 3}
7 slice2 := append(slice1, 4, 5)
8 fmt.Println(slice1, slice2)
9}copy, coba kita ubah program diatas menjadi seperti ini.1func main() {
2 slice1 := []int{1,2,3}
3 slice2 := make([]int, 2)
4 copy(slice2, slice1)
5 fmt.Println(slice1, slice2)
6}1 dan 2 saja yang ada pada slice2.Maps
Struktur data yang tidak berurutan sehingga kita bebas menyimpan-nya dalam posisi mana saja. Berikut ini contoh definisi map pada variable x.
1 var x map[string]int1 var x map[string]int
2 x["key"] = 10
3 fmt.Println(x)panic seperti ini1$ go run golang-basic/06-structure/error-panic-map.go
2panic: assignment to entry in nil map
3
4goroutine 1 [running]:
5main.main()
6 /Users/ihsanarif/Documents/ihsan/tutorial/tutorial-go/golang-basic/06-structure/error-panic-map.go:7 +0x44
7exit status 21 x := make(map[string]int)
2 x["key"] = 10
3 fmt.Println(x["key"])delete.1delete(x, 1) 1package main
2
3import "fmt"
4
5func main() {
6 elements := make(map[string]string)
7 elements["H"] = "Hydrogen"
8 elements["He"] = "Helium"
9 elements["Li"] = "Lithium"
10 elements["Be"] = "Beryllium"
11 elements["B"] = "Boron"
12 elements["C"] = "Carbon"
13 elements["N"] = "Nitrogen"
14 elements["O"] = "Oxygen"
15 elements["F"] = "Fluorine"
16 elements["Ne"] = "Neon"
17 fmt.Println(elements["Ho"])
18}default, data tersebut jika tidak terdapat pada suatu index map maka akan menghasilkan output kosong "".Trik agar kita mengetahui bahwa dalam maps tersebut terdapat index x atau tidak kita perlu penambahan kondisi seperti ini.
1 name, ok := elements["Un"]
2 fmt.Println(name, ok)Dalam maps ini juga kita bisa buat multiple map dalam satu variable. Bisa dilihat contoh program seperti dibawah ini.
1package main
2
3import "fmt"
4
5func main() {
6 elements := map[string]map[string]string{
7 "H": {
8 "name": "Hydrogen",
9 "state": "gas",
10 },
11 "He": {
12 "name": "Helium",
13 "state": "gas",
14 },
15 "Li": {
16 "name": "Lithium",
17 "state": "solid",
18 },
19 "Be": {
20 "name": "Beryllium",
21 "state": "solid",
22 },
23 "B": {
24 "name": "Boron",
25 "state": "solid",
26 },
27 "C": {
28 "name": "Carbon",
29 "state": "solid",
30 },
31 "N": {
32 "name": "Nitrogen",
33 "state": "gas",
34 },
35 "O": {
36 "name": "Oxygen",
37 "state": "gas",
38 },
39 "F": {
40 "name": "Fluorine",
41 "state": "gas",
42 },
43 "Ne": {
44 "name": "Neon",
45 "state": "gas",
46 },
47 }
48 if el, ok := elements["Li"]; ok {
49 fmt.Println(el["name"], el["state"])
50 }
51}