Skip to content

Commit af9739f

Browse files
committed
update docs
1 parent 084265b commit af9739f

File tree

25 files changed

+609
-707
lines changed

25 files changed

+609
-707
lines changed

.gitignore

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,27 @@ go.work
2020
*.swo
2121
*.bak
2222
*.tmp
23+
.sublime-project
24+
.sublime-workspace
2325

2426
# Logs
2527
*.log
2628

2729
# OS generated files
2830
.DS_Store
29-
Thumbs.db
31+
Thumbs.db
32+
._*
33+
34+
# Local configuration files
35+
.env
36+
37+
# Build output directories
38+
build/
39+
dist/
40+
41+
# Application artifacts
42+
*.app
43+
44+
# Other temporary/backup files
45+
*.orig
46+
*.pyc

anon-func/main.go

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
1+
/*
2+
Fungsi anonim: fungsi tanpa nama.
3+
Bisa langsung dieksekusi atau disimpan di variabel.
4+
Berguna untuk fungsi kecil, callback, goroutine.
5+
*/
16
package main
27

38
import "fmt"
49

5-
/*
6-
Anonymous function adalah fungsi tanpa nama yang bisa langsung dieksekusi atau disimpan dalam variabel.
7-
Anonymous function sangat berguna dalam callback, goroutine, atau kode yang hanya digunakan sekali.
8-
*/
9-
1010
func main() {
1111

12-
// Anonymous Function Sederhana
13-
func() {
14-
fmt.Println("Ini contoh dasar")
12+
// Fungsi anonim sederhana, langsung jalan.
13+
func() { // Definisikan.
14+
fmt.Println("Ini contoh dasar") // Lakukan aksi.
15+
}() // Langsung jalankan.
1516

16-
}()
17+
fmt.Println() // Spasi output.
1718

18-
// Anonymous Function dengan Parameter
19-
func(name string) {
20-
fmt.Println("Hai", name)
19+
// Fungsi anonim dengan parameter, langsung jalan.
20+
func(name string) { // Terima nama.
21+
fmt.Println("Hai", name) // Sapa nama.
22+
}("Jhon") // Panggil dengan nama.
2123

22-
}("Jhon")
24+
fmt.Println() // Spasi output.
2325

24-
// Anonymous Function yang Disimpan dalam Variabel
25-
great := func(country string) string {
26-
return "Hai," + country
26+
// Fungsi anonim disimpan di variabel.
27+
great := func(country string) string { // Terima negara, kembalikan sapaan.
28+
return "Hai, " + country // Buat sapaan.
2729
}
28-
fmt.Print(great("Jhon"))
29-
30+
fmt.Println(great("Jhon")) // Panggil via variabel.
3031
}

array/main.go

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,56 @@
1-
package main
2-
3-
import "fmt"
4-
51
/*
6-
Array adalah kumpulan data bertipe sama yang disimpan dalam satu variabel.
7-
Array memiliki panjang tetap yang harus ditentukan saat deklarasi,
8-
kecuali menggunakan `[...]` yang otomatis menghitung panjang berdasarkan elemen awal.
2+
Goroutine: fungsi yang berjalan secara konkuren (bersamaan).
3+
Digunakan untuk menjalankan tugas secara paralel tanpa memblokir program utama.
4+
Ideal untuk operasi I/O, tugas latar belakang, dan meningkatkan responsivitas aplikasi.
95
*/
10-
func main() {
6+
package main
117

12-
// Deklarasi array tanpa nilai awal
13-
var x [2]string
14-
x[0] = "good"
15-
x[1] = "poor"
8+
import (
9+
"fmt"
10+
"time"
11+
)
1612

17-
var z [1]bool
18-
z[0] = true
13+
func LoopingPrint(number int, message string) {
14+
// Cetak pesan berulang kali.
15+
for i := 0; i < number; i++ {
16+
fmt.Println(i+1, message)
17+
}
18+
}
1919

20-
fmt.Println("Elemen kedua dari x:", x[1])
21-
fmt.Println("Elemen pertama dari z:", z[0])
20+
type Person struct {
21+
ID int
22+
Name string
23+
}
2224

23-
// Deklarasi array dengan nilai awal
24-
var a = [2]string{"yes", "no"}
25-
fmt.Println("Elemen kedua dari a:", a[1])
26-
fmt.Println("Jumlah elemen dalam array a:", len(a))
25+
func (p Person) SayMyName() string {
26+
// Mengembalikan nama (sebenarnya duplikasi nama).
27+
return p.Name + " dari " + p.Name
28+
}
2729

28-
// Deklarasi array tanpa jumlah elemen (panjang otomatis)
29-
var m = [...]int{1, 2, 3}
30-
fmt.Println("Elemen ketiga dari m:", m[2])
31-
fmt.Println("Jumlah elemen dalam array m:", len(m))
30+
func (p Person) CallMe() {
31+
// Mencetak ID dan nama person.
32+
fmt.Println(p.ID, p.Name)
33+
}
3234

33-
// Perulangan array dengan for
34-
var brand = [...]string{
35-
"Lenovo",
36-
"Asus",
37-
"Samsung",
38-
}
39-
for i := 0; i < len(brand); i++ {
40-
fmt.Printf("Elemen ke-%d dari brand: %s\n", i, brand[i])
35+
func main() {
36+
// Membuat instance struct Person.
37+
person := Person{
38+
ID: 123,
39+
Name: "Jhon Pardy",
4140
}
4241

43-
// Perulangan array dengan for range
44-
var power = [...]int{1, 2, 4}
45-
for i, value := range power { // Menggunakan `value` untuk menghindari kebingungan
46-
fmt.Printf("Indeks: %d, Nilai: %d\n", i, value)
47-
}
42+
// Jalankan LoopingPrint sebagai goroutine.
43+
go LoopingPrint(5, "Yes")
4844

49-
// Abaikan indeks menggunakan _,
50-
for _, value := range power {
51-
fmt.Printf("Nilai (tanpa indeks): %d\n", value)
52-
}
45+
// Jalankan method CallMe sebagai goroutine.
46+
go person.CallMe()
47+
48+
// Jalankan method SayMyName sebagai goroutine (hasil tidak digunakan).
49+
go person.SayMyName()
50+
51+
// Tunggu sebentar agar goroutine punya waktu berjalan.
52+
time.Sleep(time.Second)
53+
54+
// Cetak "Done" setelah jeda.
55+
fmt.Println("Done")
5356
}

channel/main.go

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,48 @@
1+
/*
2+
Go channel adalah mekanisme komunikasi antar goroutine yang aman dan terstruktur.
3+
Channel memungkinkan satu goroutine mengirim nilai ke goroutine lain.
4+
Mereka adalah pipa yang menghubungkan goroutine, memungkinkan pertukaran data.
5+
6+
Kapan Go channel digunakan?
7+
- Untuk mengirim data antar goroutine secara aman (menghindari race condition).
8+
- Untuk melakukan sinkronisasi antar goroutine, di mana satu goroutine menunggu data dari goroutine lain.
9+
- Dalam pola desain concurrency seperti pipeline dan worker pool.
10+
- Ketika Anda perlu mengkoordinasikan pekerjaan yang dilakukan secara paralel.
11+
12+
Secara singkat, channel digunakan untuk komunikasi dan sinkronisasi antar bagian kode yang berjalan secara bersamaan (goroutine).
13+
*/
114
package main
215

316
import (
417
"fmt"
18+
"time"
519
)
620

21+
func sendMessage(ch chan string, msg string) {
22+
// Mengirim pesan ke channel setelah penundaan singkat.
23+
time.Sleep(time.Millisecond * 100)
24+
ch <- msg
25+
}
26+
27+
func receiveMessage(ch chan string) {
28+
// Menerima pesan dari channel dan mencetaknya.
29+
msg := <-ch
30+
fmt.Println("Menerima:", msg)
31+
}
32+
733
func main() {
8-
// Membuat channel yang dapat mengirim dan menerima nilai bertipe string
9-
message := make(chan string)
10-
11-
// Fungsi anonim untuk mengirim pesan melalui channel
12-
var SayMyName = func(who string) {
13-
data := fmt.Sprintf("Hai %s", who)
14-
message <- data // Mengirim data ke channel
15-
}
16-
17-
// Menjalankan beberapa goroutine
18-
go SayMyName("Jhon")
19-
go SayMyName("Tom")
20-
go SayMyName("Hardy")
21-
22-
// Menerima pesan dari channel sebanyak jumlah goroutine
23-
// Hasil bisa saja tidak berurutan karena goroutine berjalan secara paralel
24-
for i := 0; i < 3; i++ {
25-
fmt.Println(<-message)
26-
}
27-
28-
// Menutup channel karena sudah tidak digunakan lagi
29-
close(message)
34+
// Membuat channel 'messages' yang dapat mengirim dan menerima nilai bertipe string.
35+
messages := make(chan string)
36+
37+
// Menjalankan goroutine untuk mengirim pesan.
38+
go sendMessage(messages, "Halo dari goroutine 1")
39+
go sendMessage(messages, "Pesan kedua dari goroutine 2")
40+
41+
// Menjalankan goroutine untuk menerima pesan.
42+
go receiveMessage(messages)
43+
go receiveMessage(messages)
44+
45+
// Memberikan waktu agar goroutine selesai berjalan sebelum program utama berakhir.
46+
time.Sleep(time.Second)
47+
fmt.Println("Selesai")
3048
}

commentar/main.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
1+
/*
2+
Komentar dalam Go digunakan untuk memberikan penjelasan pada kode.
3+
Komentar tidak dieksekusi oleh kompiler.
4+
Ada dua jenis komentar: inline (satu baris) dan multiline (lebih dari satu baris).
5+
Komentar penting untuk membuat kode lebih mudah dipahami.
6+
*/
17
package main
28

39
import "fmt"
410

511
func main() {
612

7-
// komentar inline
8-
a := "hello"
13+
// komentar inline: penjelasan singkat di akhir baris kode.
14+
a := "hello" // variabel 'a' menyimpan string "hello".
915

1016
/*
11-
ini adalah komentar multiline
12-
untuk penjelasan lebih panjang.
17+
ini adalah komentar multiline:
18+
digunakan untuk penjelasan yang lebih detail
19+
yang membutuhkan beberapa baris.
1320
*/
14-
var b int = 7
21+
var b int = 7 // variabel 'b' bertipe integer dan bernilai 7.
1522

16-
fmt.Println(a, b)
23+
fmt.Println(a, b) // mencetak nilai variabel 'a' dan 'b' ke konsol.
1724
}

constant/main.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
1+
/*
2+
Konstanta: variabel dengan nilai tetap setelah deklarasi.
3+
Digunakan untuk nilai yang tidak boleh berubah sepanjang program,
4+
seperti nilai matematika (pi), konfigurasi, atau string literal yang sering dipakai.
5+
Deklarasikan dengan 'const'.
6+
*/
17
package main
28

39
import "fmt"
410

511
func main() {
6-
/*
7-
Konstanta adalah jenis variabel yang nilainya tidak bisa diubah setelah dideklarasikan.
8-
Inisialisasi nilai konstanta hanya dilakukan sekali saja di awal, setelah itu variabel tidak bisa diubah nilainya.
9-
Konstanta dalam Go tidak bisa dideklarasikan dengan shorthand assignment `:=`.
10-
Konstanta hanya bisa dideklarasikan dengan `const`.
11-
*/
12-
13-
// Deklarasi konstanta dengan tipe data eksplisit
14-
const x int = 3 // Konstanta dengan tipe eksplisit int
15-
const y string = "halo" // Konstanta dengan tipe eksplisit string
16-
const z bool = true // Konstanta dengan tipe eksplisit bool
17-
18-
// Menampilkan nilai-nilai konstanta
12+
// Konstanta integer.
13+
const x int = 3
14+
15+
// Konstanta string.
16+
const y string = "halo"
17+
18+
// Konstanta boolean.
19+
const z bool = true
20+
1921
fmt.Println(x, y, z)
2022

21-
// Deklarasi Multi Konstanta dalam satu blok
23+
// Beberapa konstanta dalam satu blok.
2224
const (
23-
a string = "hai" // Konstanta string
24-
b int = 2 // Konstanta int
25-
c bool = false // Konstanta bool
26-
d = 3.14 // Konstanta float64 secara otomatis ditentukan oleh Go
25+
a string = "hai"
26+
b int = 2
27+
c bool = false
28+
d = 3.14 // float otomatis
2729
)
2830

29-
// Menampilkan nilai-nilai konstanta
3031
fmt.Println(a, b, c)
3132

32-
// Deklarasi Multiple Konstanta dalam satu baris dengan tipe otomatis
33-
const q, w, r = 1, 2, 3 // Semua konstanta ini akan bertipe `int` secara otomatis
33+
// Beberapa konstanta dalam satu baris (tipe otomatis).
34+
const q, w, r = 1, 2, 3 // Semua int
3435

35-
// Menampilkan nilai-nilai konstanta yang dideklarasikan dalam satu baris
3636
fmt.Println(q, w, r)
3737
}

0 commit comments

Comments
 (0)