Lompat ke konten utama
←

Go dari Nol

Pelajaran 8 dari 15

Fungsi, slice, dan map

Fungsi dan nilai balik ganda

Setelah pelajaran ini kamu bisa membaca deklarasi fungsi Go, menangkap nilai balik ganda dengan benar termasuk lewat pengenal kosong, dan menjelaskan bahwa argumen dikirim sebagai salinan.

±13 menitDiperiksa 5 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

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.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 1 dari 3

Apa yang dicetak program ini?

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)
	_, sisa2 := bagiRata(50000, 4)
	fmt.Println(sisa2)
}
Pilih satu jawaban

Latihan 2 dari 3

Apa yang terjadi saat program ini dijalankan dengan go run?

package main

import (
	"fmt"
	"strconv"
)

func main() {
	n := strconv.Atoi("25")
	fmt.Println(n + 5)
}
Pilih satu jawaban

Latihan 3 dari 3

Apa yang dicetak program ini?

package main

import "fmt"

func tambahStok(stok int, masuk int) {
	stok += masuk
	fmt.Println("di dalam:", stok)
}

func main() {
	stok := 5
	tambahStok(stok, 10)
	fmt.Println("di main:", stok)
}
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke