10. Membaca pesan error — Solusi PR
File solusi .go ada di
exercises/10/homework/solutions/. Soal-soal ini melatih
loop: jalankan, baca error pertama, perbaiki satu hal, jalankan
lagi.
Soal 1 — Namai error-nya
Soal. Identifikasi error-nya, lalu perbaiki.
Cara berpikir. Jalankan file, baca pesannya, dan cocokkan dengan salah satu dari empat error: newline in string, undefined, not used, atau error kurung kurawal.
Solusi yang dikerjakan. Starter-nya adalah:
package main
import "fmt"
func main() {
fmt.Println("Hello,", Keiko)
}Saat dijalankan, hasilnya:
# command-line-arguments
exercises\10\homework\01-name-the-error.go:10:24: undefined: Keiko
Tanpa tanda kutip, Keiko adalah sebuah nama, dan tidak
ada yang bernama itu. Maksudnya adalah teks. Sebuah perbaikan:
package main
import "fmt"
func main() {
fmt.Println("Hello,", "Keiko")
}
// error: undefined: KeikoSoal 2 — Perbaiki tanda kutipnya
Soal. Perbaiki string yang tidak ditutup. Go melaporkan:
# command-line-arguments
exercises\10\homework\02-fix-the-quote.go:8:39: newline in string
exercises\10\homework\02-fix-the-quote.go:8:39: syntax error: unexpected newline in argument list; possibly missing comma or )
Solusi yang dikerjakan.
package main
import "fmt"
func main() {
fmt.Println("A wizard is never late.")
}Satu-satunya perubahan adalah penutup " yang hilang
sebelum ).
Kesalahan umum.
- Menambahkan tanda kutip setelah
). Tanda kutip penutup ada di akhir teks, sebelum tanda kurung penutup. Kalau tidak,)menjadi bagian dari string, dan Go melaporkansyntax error: unexpected newline in argument list; possibly missing comma or ).
Soal 3 — Perbaiki typo-nya
Soal. Nama fungsi yang salah eja menyebabkan error
undefined:.
Solusi yang dikerjakan. Starter-nya punya
fmt.Prinln("Fixed!"). Pesannya menyebut pelakunya:
# command-line-arguments
exercises\10\homework\03-fix-the-typo.go:8:6: undefined: fmt.Prinln
Perbaiki ejaannya:
package main
import "fmt"
func main() {
fmt.Println("Fixed!")
}Kesalahan umum.
- "Memperbaiki" dengan menciptakan nama lain.
fmthanya punya nama-nama yang dimilikinya. Ketika pesannya mengatakanfmt.Prinln, perbaikannya hampir selalu fungsi yang sebenarnya dieja dengan benar —fmt.Println.
Tantangan — Tiga sekaligus
Soal. Tiga kesalahan, masing-masing satu jenis, diperbaiki satu per satu.
Cara berpikir. Jalankan, perbaiki error pertama, dan jalankan lagi. Starter-nya adalah:
package main
import "fmt"
func main()
{
fmt.Println("Starting up)
fmt.Prinln("Working")
fmt.Println("done")
}Saat pertama dijalankan, dua dari tiga kesalahan terlihat:
# command-line-arguments
exercises\10\homework\04-three-in-a-row.go:10:1: syntax error: unexpected semicolon or newline before {
exercises\10\homework\04-three-in-a-row.go:11:27: newline in string
Pindahkan { ke atas dan jalankan lagi. File sekarang
lebih pendek satu baris, jadi nomor barisnya berubah:
# command-line-arguments
exercises\10\homework\04-three-in-a-row.go:10:27: newline in string
exercises\10\homework\04-three-in-a-row.go:10:27: syntax error: unexpected newline in argument list; possibly missing comma or )
Tambahkan penutup " dan jalankan lagi. Baru sekarang Go
bisa memeriksa nama:
# command-line-arguments
exercises\10\homework\04-three-in-a-row.go:11:6: undefined: fmt.Prinln
Perbaiki ejaannya untuk langkah terakhir. Siklusnya bekerja sebagaimana mestinya.
Solusi yang dikerjakan.
package main
import "fmt"
func main() {
fmt.Println("Starting up")
fmt.Println("Working")
fmt.Println("done")
}Program mencetak:
Starting up
Working
done
Kesalahan umum.
- Memperbaiki ketiganya sekaligus dan kehilangan jejak perubahan mana yang berhasil. Satu error, satu perbaikan, jalankan lagi — bahkan ketika kamu pikir kamu melihat semuanya.
Selesai?
Itulah akhir dari Bagian 2. Kamu bisa menginstal Go dan menjalankan
program, mencetak tepat apa yang kamu inginkan, memberi komentar pada
kode, dan membaca error Go. Mini-proyek Bagian 2 — Banner Nama —
memanfaatkan kemampuan fmt.Println-mu untuk membangun
gambar dari teks. Lalu Bagian 3 menggali lebih dalam tentang variabel,
string, angka, dan input.