Pelajaran modul (1/5)
Tanda tangan dan parameter
Di Go, fungsi dideklarasikan dengan func. Sintaks tanda tangannya berbeda
dari C/Java: tipenya muncul setelah nama parameter, dipisahkan dengan a
ruang. Ini adalah pilihan yang lebih baik dibaca dengan lantang — "n of type int" sebagai gantinya
dari "int n".
Sintaks dasar
func sum(a int, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("ciao", name)
}Fungsi yang tidak memiliki nilai kembalian hanya menghilangkan tipe kembaliannya.
Parameter berurutan dari tipe yang sama
Jika beberapa parameter berturut-turut memiliki tipe yang sama, Anda dapat mendeklarasikannya itu hanya sekali pada yang terakhir. Ini bersifat idiomatis dan Anda akan melihatnya di mana-mana:
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }Fungsi yang diekspor vs tidak diekspor
Di Go, visibilitas ditentukan oleh nama: pengidentifikasi yang dimulai dengan huruf besar diekspor (terlihat dari paket lain), yang lainnya bersifat pribadi untuk paket tersebut.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageBerfungsi sebagai nilai
Fungsi adalah nilai kelas satu: Anda dapat menetapkannya, meneruskannya, dan kembalikan mereka. Kita akan menggali lebih dalam pelajaran tentang penutupan.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main dan init: dua nama khusus
func main()merupakan titik masuk paketmain. Tidak ada argumen, tidak ada nilai kembalian.func init()dipanggil secara otomatis saat startup paket (bahkan beberapa kali jika beberapa file mendefinisikan satu). Berguna untuk pengaturan; gunakan dengan hemat.
Cobalah
Definisikan fungsi sum(a, b int) int yang mengembalikan a+b, lalu panggil di main dengan (3, 4).
Tunjukkan petunjuk
Jenis bersama: `(a, b int)`. Tipe pengembalian berada SETELAH tanda kurung.
Solusi tersedia setelah 3 upaya
Definisikan salam(string nama) (tidak ada nilai kembalian) yang mencetak 'ciao <nama>'.
Tunjukkan petunjuk
Tidak ada tipe pengembalian jika fungsi tidak mengembalikan apa pun.
Solusi tersedia setelah 3 upaya
Kemana perginya tipe parameter di Go?
func f(? ?) {}Rekap
func name(param type, ...) returnType { ... }.- Ketik setelah nama; parameter berurutan dari tipe yang sama → deklarasikan sekali saja.
- Inisial huruf besar = diekspor; huruf kecil = pribadi untuk paket.
- Fungsi kelas satu (dapat dialihkan, lumayan).
maindaninitadalah nama khusus dengan semantik khusus.