Menu
CoddyTech

Cheat Sheet Go

Terakhir diperbarui

Hello World & struktur program

Setiap program Go berada di dalam sebuah package; titik masuknya adalah func main di package main.

OperasiSintaks
Deklarasi packagepackage main
Mengimpor packageimport "fmt"
Mengimpor beberapa packageimport (\n "fmt"\n "os"\n)
Titik masuk programfunc main() { ... }
Mencetak satu barisfmt.Println("Hello, World!")
Mencetak dengan formatfmt.Printf("%d items\n", n)
Menjalankan filego run main.go
Membuat binarygo build

Variabel & tipe

Go bertipe statis, tetapi bisa menyimpulkan tipe dengan :=.

OperasiSintaks
Deklarasi dengan tipevar age int = 30
Deklarasi dengan inferensivar name = "Ada"
Deklarasi singkatcount := 0
Beberapa sekaligusx, y := 1, 2
Konstantaconst Pi = 3.14
Zero value0, "", false, nil
Tipe dasarint, float64, string, bool, byte, rune
Konversi tipef := float64(i)

Alur kontrol

Go hanya punya satu kata kunci perulangan, yaitu for, dan tidak memakai tanda kurung di sekitar kondisi.

OperasiSintaks
If / elseif x > 0 { ... } else { ... }
If dengan pernyataan inisialisasiif v, ok := m[k]; ok { ... }
For loop (gaya C)for i := 0; i < 10; i++ { ... }
Perulangan gaya whilefor x < 100 { ... }
Perulangan tak terbatasfor { ... }
Range pada slicefor i, v := range items { ... }
Switchswitch day { case 1: ...; default: ... }
Switch tanpa ekspresiswitch { case x > 0: ... }
Break / continuebreak, continue

Fungsi

Fungsi adalah nilai first-class dan bisa mengembalikan beberapa hasil.

OperasiSintaks
Fungsi dasarfunc add(a int, b int) int { return a + b }
Tipe parameter bersamafunc add(a, b int) int { ... }
Beberapa nilai kembalianfunc divmod(a, b int) (int, int) { return a / b, a % b }
Nilai kembalian bernamafunc split(sum int) (x, y int) { x = sum / 2; return }
Fungsi variadicfunc sum(nums ...int) int { ... }
Fungsi anonimf := func() { ... }
Closurefunc counter() func() int { ... }
Defer (dijalankan saat return)defer file.Close()

Slice & array

Array punya ukuran tetap; slice adalah tampilan dinamis atas array.

OperasiSintaks
Array berukuran tetapvar a [3]int
Literal slicenums := []int{1, 2, 3}
Membuat slice dengan makes := make([]int, 0, 10)
Appends = append(s, 4)
Panjang / kapasitaslen(s), cap(s)
Memotong slices[1:3]
Menyalincopy(dst, src)
Iterasifor i, v := range s { ... }

Map

Map adalah hash table bawaan Go.

OperasiSintaks
Membuat map dengan makem := make(map[string]int)
Literal mapm := map[string]int{"a": 1, "b": 2}
Mengisi nilaim["c"] = 3
Mengambil nilaiv := m["a"]
Memeriksa keberadaanv, ok := m["x"]
Menghapus keydelete(m, "a")
Panjanglen(m)
Iterasifor k, v := range m { ... }

Struct & method

Struct mengelompokkan field; method menempelkan perilaku lewat receiver.

OperasiSintaks
Mendefinisikan structtype Point struct { X, Y int }
Membuat instancep := Point{X: 1, Y: 2}
Mengakses fieldp.X
Pointer ke structp := &Point{1, 2}
Method dengan value receiverfunc (p Point) Dist() float64 { ... }
Method dengan pointer receiverfunc (p *Point) Move(dx int) { p.X += dx }
Struct tertanam (embedded)type Circle struct { Point; R int }
Struct tagName string dengan tag json:"name" di dalam backtick

Interface

Interface dipenuhi secara implisit: tipe apa pun yang punya method yang tepat memenuhi syarat.

OperasiSintaks
Mendefinisikan interfacetype Shape interface { Area() float64 }
Mengimplementasikan (implisit)func (c Circle) Area() float64 { ... }
Interface kosong (any)var x interface{} atau var x any
Type assertions, ok := x.(string)
Type switchswitch v := x.(type) { case int: ... }
Interface Stringerfunc (p Point) String() string { ... }

Goroutine & channel

Goroutine adalah thread ringan; channel mengirim nilai di antara goroutine.

OperasiSintaks
Memulai goroutinego doWork()
Membuat channelch := make(chan int)
Channel dengan bufferch := make(chan int, 5)
Mengirim ke channelch <- 42
Menerima dari channelv := <-ch
Menutup channelclose(ch)
Range pada channelfor v := range ch { ... }
Select pada channelselect { case v := <-ch: ...; default: ... }
Wait groupvar wg sync.WaitGroup; wg.Add(1); wg.Wait()
Mutexvar mu sync.Mutex; mu.Lock(); mu.Unlock()

Penanganan error

Go mengembalikan error sebagai nilai; tidak ada exception.

OperasiSintaks
Mengembalikan errorfunc read() (string, error) { return "", err }
Memeriksa errorif err != nil { return err }
Membuat errorerrors.New("not found")
Error dengan formatfmt.Errorf("bad id %d", id)
Membungkus errorfmt.Errorf("load: %w", err)
Membuka bungkus / mencocokkanerrors.Is(err, os.ErrNotExist)
Mencocokkan berdasarkan tipeerrors.As(err, &target)
Panic / recoverdefer func() { recover() }()

Sintaks Go yang paling sering kamu pakai, dalam satu halaman. Cheat sheet Go ini adalah referensi cepat untuk inti bahasanya: variabel dan tipe, slice dan map, struct dan interface, ditambah goroutine dan channel yang membuat Golang unggul dalam concurrency.

Semua yang ada di sini adalah Go standar dan bisa kamu compile dengan toolchain resmi. Salin yang kamu butuhkan, atau coba setiap potongan kode langsung di playground Go, tanpa perlu instalasi. Sedang belajar Go? Kursus Go interaktif gratis dari Coddy membahas slice, struct, interface, dan goroutine langkah demi langkah.

FAQ cheat sheet Go

Apakah cheat sheet Go ini gratis?

Ya. Cheat sheet Go ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark dan kembali kapan pun kamu perlu mencari operasi slice, pola channel, atau method struct.

Apa perbedaan := dan var di Go?
var x = 0 mendeklarasikan variabel dan bisa dipakai di mana saja, termasuk di tingkat package. x := 0 adalah deklarasi variabel singkat: sekaligus mendeklarasikan dan mengisi nilai, menyimpulkan tipenya, dan hanya bisa dipakai di dalam fungsi. Pakai var saat kamu butuh tipe eksplisit atau variabel tingkat package, dan := untuk deklarasi lokal yang ringkas.
Apa itu goroutine dan channel?
Goroutine adalah thread ringan yang dikelola oleh runtime Go; kamu memulainya dengan menulis go someFunc(). Channel adalah pipa bertipe yang membuat goroutine bisa berkomunikasi dengan aman: satu goroutine mengirim dengan ch <- v dan goroutine lain menerima dengan <-ch. Bersama-sama, keduanya adalah model concurrency inti Go, yang dirangkum dalam semboyan "share memory by communicating" (berbagi memori dengan berkomunikasi).
Bisakah saya berlatih Go secara online?

Bisa. Buka playground Go untuk menjalankan potongan kode apa pun dari cheat sheet ini di browsermu, tanpa perlu menginstal toolchain Go. Kalau kamu ingin belajar terarah, kursus Go interaktif gratis dari Coddy membawamu dari variabel dan slice sampai goroutine dan channel, langkah demi langkah.

Apakah cheat sheet ini cocok untuk pemula?

Cocok. Isinya disusun mulai dari topik yang paling umum (variabel, alur kontrol, fungsi) sampai yang lanjutan (goroutine, channel, penanganan error), jadi kamu bisa memakai bagian atas sejak hari pertama dan pelan-pelan menguasai sisanya.

Ilustrasi bahasa pemrograman di Coddy

Belajar Go bersama Coddy

Mulai