Skip to content

Commit c86a122

Browse files
authored
Merge pull request #301 from bagasdisini/fix-min-max
fix: rename min/max variable to prevent ambiguity with built-in functions
2 parents f216c45 + 65ce117 commit c86a122

3 files changed

Lines changed: 31 additions & 31 deletions

File tree

content/A-channel-select.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ func getAverage(numbers []int, ch chan float64) {
2929
}
3030

3131
func getMax(numbers []int, ch chan int) {
32-
var max = numbers[0]
32+
var maxNum = numbers[0]
3333
for _, e := range numbers {
34-
if max < e {
35-
max = e
34+
if maxNum < e {
35+
maxNum = e
3636
}
3737
}
38-
ch <- max
38+
ch <- maxNum
3939
}
4040
```
4141

@@ -60,8 +60,8 @@ func main() {
6060
select {
6161
case avg := <-ch1:
6262
fmt.Printf("Avg \t: %.2f \n", avg)
63-
case max := <-ch2:
64-
fmt.Printf("Max \t: %d \n", max)
63+
case maxNum := <-ch2:
64+
fmt.Printf("Max \t: %d \n", maxNum)
6565
}
6666
}
6767
}
@@ -70,7 +70,7 @@ func main() {
7070
Pada kode di atas, pengiriman data pada channel `ch1` dan `ch2` dikontrol menggunakan `select`. Terdapat 2 buah `case` kondisi penerimaan data dari kedua channel tersebut.
7171

7272
- Kondisi `case avg := <-ch1` akan terpenuhi ketika ada penerimaan data dari channel `ch1`, yang kemudian akan ditampung oleh variabel `avg`.
73-
- Kondisi `case max := <-ch2` akan terpenuhi ketika ada penerimaan data dari channel `ch2`, yang kemudian akan ditampung oleh variabel `max`.
73+
- Kondisi `case maxNum := <-ch2` akan terpenuhi ketika ada penerimaan data dari channel `ch2`, yang kemudian akan ditampung oleh variabel `maxNum`.
7474

7575
Karena ada 2 buah channel, maka perlu disiapkan perulangan 2 kali sebelum penggunaan keyword `select`.
7676

content/A-fungsi-closure.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,23 @@ import "fmt"
1515

1616
func main() {
1717
var getMinMax = func(n []int) (int, int) {
18-
var min, max int
18+
var minNum, maxNum int
1919
for i, e := range n {
2020
switch {
2121
case i == 0:
22-
max, min = e, e
23-
case e > max:
24-
max = e
25-
case e < min:
26-
min = e
22+
maxNum, minNum = e, e
23+
case e > maxNum:
24+
maxNum = e
25+
case e < minNum:
26+
minNum = e
2727
}
2828
}
29-
return min, max
29+
return minNum, maxNum
3030
}
3131

3232
var numbers = []int{2, 3, 4, 3, 4, 2, 3}
33-
var min, max = getMinMax(numbers)
34-
fmt.Printf("data : %v\nmin : %v\nmax : %v\n", numbers, min, max)
33+
var minNum, maxNum = getMinMax(numbers)
34+
fmt.Printf("data : %v\nmin : %v\nmax : %v\n", numbers, minNum, maxNum)
3535
}
3636
```
3737

@@ -46,7 +46,7 @@ var getMinMax = func(n []int) (int, int) {
4646
Cara pemanggilan closure adalah dengan memperlakukan variabel closure seperti fungsi, dituliskan seperti pemanggilan fungsi.
4747

4848
```go
49-
var min, max = getMinMax(numbers)
49+
var minNum, maxNum = getMinMax(numbers)
5050
```
5151

5252
Output program:
@@ -62,7 +62,7 @@ Berikut merupakan penjelasan tambahan untuk beberapa hal dari kode yang sudah di
6262
Template `%v` digunakan untuk menampilkan data tanpa melihat tipe datanya. Jadi bisa digunakan untuk menampilkan data array, int, float, bool, dan lainnya. Bisa dilihat di contoh statement, data bertipe array dan numerik ditampilkan menggunakan `%v`.
6363

6464
```go
65-
fmt.Printf("data : %v\nmin : %v\nmax : %v\n", numbers, min, max)
65+
fmt.Printf("data : %v\nmin : %v\nmax : %v\n", numbers, minNum, maxNum)
6666
```
6767

6868
Template `%v` ini biasa dimanfaatkan untuk menampilkan sebuah data yang tipe nya bisa dinamis atau belum diketahui. Biasa digunakan untuk keperluan debugging, misalnya untuk menampilkan data bertipe `any` atau `interface{}`.
@@ -83,10 +83,10 @@ import "fmt"
8383
func main() {
8484
var numbers = []int{2, 3, 0, 4, 3, 2, 0, 4, 2, 0, 3}
8585

86-
var newNumbers = func(min int) []int {
86+
var newNumbers = func(minNum int) []int {
8787
var r []int
8888
for _, e := range numbers {
89-
if e < min {
89+
if e < minNum {
9090
continue
9191
}
9292
r = append(r, e)
@@ -106,7 +106,7 @@ Output program:
106106
Ciri khas dari penulisan IIFE adalah adanya tanda kurung parameter yang ditulis di akhir deklarasi closure. Jika IIFE memiliki parameter, maka argument-nya juga ditulis. Contoh:
107107

108108
```go
109-
var newNumbers = func(min int) []int {
109+
var newNumbers = func(minNum int) []int {
110110
// ...
111111
}(3)
112112
```
@@ -124,10 +124,10 @@ package main
124124

125125
import "fmt"
126126

127-
func findMax(numbers []int, max int) (int, func() []int) {
127+
func findMax(numbers []int, maxNum int) (int, func() []int) {
128128
var res []int
129129
for _, e := range numbers {
130-
if e <= max {
130+
if e <= maxNum {
131131
res = append(res, e)
132132
}
133133
}
@@ -156,13 +156,13 @@ Berikut merupakan contoh implementasi fungsi tersebut:
156156

157157
```go
158158
func main() {
159-
var max = 3
159+
var maxNum = 3
160160
var numbers = []int{2, 3, 0, 4, 3, 2, 0, 4, 2, 0, 3}
161-
var howMany, getNumbers = findMax(numbers, max)
161+
var howMany, getNumbers = findMax(numbers, maxNum)
162162
var theNumbers = getNumbers()
163163

164164
fmt.Println("numbers\t:", numbers)
165-
fmt.Printf("find \t: %d\n\n", max)
165+
fmt.Printf("find \t: %d\n\n", maxNum)
166166

167167
fmt.Println("found \t:", howMany) // 9
168168
fmt.Println("value \t:", theNumbers) // [2 3 0 3 2 0 2 0 3]

content/A-fungsi.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ func main() {
7676
fmt.Println("random number:", randomValue)
7777
}
7878

79-
func randomWithRange(min, max int) int {
80-
var value = randomizer.Int()%(max-min+1) + min
79+
func randomWithRange(minNum, maxNum int) int {
80+
var value = randomizer.Int()%(maxNum-minNum+1) + minNum
8181
return value
8282
}
8383
```
@@ -89,7 +89,7 @@ Fungsi `randomWithRange()` didesain untuk *generate* angka acak sesuai dengan ra
8989
Cara menentukan tipe data nilai balik fungsi adalah dengan menuliskan tipe data yang diinginkan setelah kurung parameter. Bisa dilihat pada kode di atas, bahwa `int` merupakan tipe data nilai balik fungsi `randomWithRange()`.
9090

9191
```go
92-
func randomWithRange(min, max int) int
92+
func randomWithRange(minNum, maxNum int) int
9393
```
9494

9595
Sedangkan cara untuk mengembalikan nilai itu sendiri adalah dengan menggunakan keyword `return` diikuti data yang dikembalikan. Pada contoh di atas, `return value` artinya nilai variabel `value` dijadikan nilai kembalian fungsi.
@@ -138,8 +138,8 @@ Khusus untuk fungsi yang tipe data parameternya sama, bisa ditulis dengan gaya y
138138
func nameOfFunc(paramA type, paramB type, paramC type) returnType
139139
func nameOfFunc(paramA, paramB, paramC type) returnType
140140

141-
func randomWithRange(min int, max int) int
142-
func randomWithRange(min, max int) int
141+
func randomWithRange(minNum int, maxNum int) int
142+
func randomWithRange(minNum, maxNum int) int
143143
```
144144

145145
## A.18.6. Penggunaan Keyword `return` Untuk Menghentikan Proses Dalam Fungsi

0 commit comments

Comments
 (0)