Pertama beberapa latar belakang. Tata bahasa formal Go menggunakan titik koma ";"
sebagai terminator dalam banyak produksi, tetapi program Go mungkin menghilangkan sebagian besar dari mereka (dan mereka harus memiliki sumber yang lebih jelas dan mudah dibaca; gofmt
juga menghapus titik koma yang tidak perlu).
Spesifikasi mencantumkan aturan yang tepat. Spec: Titik Koma:
Tata bahasa formal menggunakan titik koma ";" sebagai terminator dalam sejumlah produksi. Program Go mungkin menghilangkan sebagian besar titik koma ini menggunakan dua aturan berikut:
Ketika input dipecah menjadi token, titik koma secara otomatis dimasukkan ke aliran token segera setelah token terakhir baris jika token itu
- sebuah pengenal
- sebuah integer , floating-point , imaginary , rune , atau string literal
- salah satu kata kunci
break
, continue
, fallthrough
, ataureturn
- salah satu operator dan pembatas ++, -,),], atau}
Untuk memungkinkan pernyataan kompleks menempati satu baris, titik koma dapat dihilangkan sebelum penutup ")" atau "}".
Jadi seperti yang Anda lihat jika Anda memasukkan karakter baris baru setelah tanda kurung )
, tanda titik koma ;
akan disisipkan secara otomatis sehingga baris berikutnya tidak akan dianggap sebagai kelanjutan dari baris sebelumnya. Inilah yang terjadi dalam kasus Anda, dan baris berikutnya yang dimulai dengan .Scan(&ReadUser.ID,...
akan memberi Anda kesalahan waktu kompilasi karena ini berdiri sendiri (tanpa baris sebelumnya) adalah kesalahan waktu kompilasi:syntax error: unexpected .
Jadi Anda dapat memutuskan baris Anda kapan saja yang tidak bertentangan dengan aturan yang tercantum di bawah poin di 1.
atas.
Biasanya Anda dapat mematahkan garis setelah koma ,
, setelah pembukaan kurung misalnya (
, [
, {
, dan setelah sebuah titik .
yang mungkin referensi bidang atau metode beberapa nilai. Anda juga dapat memutuskan baris Anda setelah operator biner (yang membutuhkan 2 operan), misalnya:
i := 1 +
2
fmt.Println(i) // Prints 3
Satu hal yang perlu diperhatikan di sini adalah bahwa jika Anda memiliki struct atau slice atau peta literal yang mencantumkan nilai awal, dan Anda ingin memutus baris setelah mencantumkan nilai terakhir, Anda harus meletakkan koma wajib ,
meskipun ini adalah nilai terakhir dan tidak lebih banyak akan mengikuti, misalnya:
s := []int {
1, 2, 3,
4, 5, 6, // Note it ends with a comma
}
Ini untuk menyesuaikan dengan aturan titik koma, dan juga agar Anda dapat mengatur ulang dan menambahkan baris baru tanpa harus berhati-hati dalam menambahkan / menghapus koma terakhir; misal, Anda cukup menukar 2 baris tanpa harus menghapus dan menambahkan koma baru:
s := []int {
4, 5, 6,
1, 2, 3,
}
Hal yang sama berlaku saat mencantumkan argumen ke pemanggilan fungsi:
fmt.Println("first",
"second",
"third", // Note it ends with a comma
)