Materi
Fungsi dideklarasikan dengan func, nama, daftar parameter, lalu tipe nilai baliknya. Tipe ditulis sesudah nama parameter, func luas(p int, l int) int, dan parameter bertipe sama boleh digabung menjadi func luas(p, l int) int. Fungsi yang tidak mengembalikan apa pun tidak menulis tipe balik.
Fungsi Go boleh mengembalikan lebih dari satu nilai. func bagiRata(total, orang int) (int, int) mengembalikan bagian tiap orang dan sisanya sekaligus, dan pemanggil menangkap keduanya: bagian, sisa := bagiRata(100000, 3). Pemanggil wajib menyediakan variabel sebanyak nilai baliknya. Nilai yang tidak dibutuhkan dibuang ke pengenal kosong _. Pustaka standar memakai pola ini di mana-mana: strconv.Atoi("25") mengembalikan angkanya dan sebuah error, sehingga n := strconv.Atoi("25") ditolak dengan pesan assignment mismatch: 1 variable but strconv.Atoi returns 2 values.
package main
import "fmt"
func bagiRata(total, orang int) (int, int) {
return total / orang, total % orang
}
func main() {
bagian, sisa := bagiRata(100000, 3)
fmt.Println(bagian, sisa) // 33333 1
_, s := bagiRata(10, 4)
fmt.Println(s) // 2
}Argumen dikirim sebagai salinan. Mengubah parameter bertipe int di dalam fungsi tidak mengubah variabel milik pemanggil. Untuk itu fungsi mengembalikan nilai baru, atau memakai pointer yang dibahas di pelajaran struct.