Fakta Unik Bahasa Go – Simbol { Tidak Boleh Ditulis Setelah NEWLINE


Pertama kali mencoba contoh program Hello World versi Go, saya meng-copy dari tampilan pada browser dan mem-paste ke dalam editor teks, setelah itu save dan run. Fa-la-la, program sukses dijalankan dan muncullah Hello World di layar.

  package main

  import "fmt"

  func main() {
    fmt.Println("Hello World")
  }

Karena saya penganut format penulisan kode program dengan curly braket sejajar (opening brace pada baris tersendiri), maka saya pun mengedit file hello.go di atas menjadi

  package main

  import "fmt"

  func main()
  {
    fmt.Println("Hello Chandra")
  }

Setelah menyimpan file hello.go, saya pun mencoba menjalankannya. Dan betapa bingung saya karena muncul beberapa error seperti ditunjukkan dalam screenshot berikut ini.

Syntax error di bagian mananya ???

Walah-walah, ternyata Go tidak mengijinkan adanya newline sebelum opening brace. Jadi, { sebagai penanda awal dari kelompok perintah harus diketik berderet atau sebaris dengan deklarasi fungsi, struct, if, for atau yang lainnya, tidak boleh diletakkan di baris baru.

Jadi penulisan:

func main () {
  fmt.Println("Hai")
}

adalah benar. Dan penulisan:

func main ()
{  // gak boleh
  fmt.Println("Hai")
}

adalah salah.

Penulisan:

for a := 1; a<=5; a++ {
  fmt.Printf("a = %d\n", a)
}

adalah benar. Dan penulisan:

for a := 1; a<=5 a++
{  // gak boleh
  fmt.Printf("a = %d\n", a)
}

adalah salah.

 

Mengapa Demikian?

Setelah baca-baca, saya mendapatkan kesimpulan sebagai berikut:

Tidak seperti C dan PASCAL, baris-baris perintah (statements) Go tidak diakhiri dengan semicolon (;). Tanda ; digunakan untuk tujuan memudahkan proses parsing. Dengan adanya semicolon pada setiap akhir baris perintah, parser akan lebih mudah mengidentifikasi kalimat perintah atau baris perintah (statements). Jadi semicolon adalah untuk parser, bukan untuk programmer, kita, manusianya. Karena memang tanpa semicolon pun kita bisa membaca dan memisahkan baris perintah (statements).

Go menghilangkan kewajiban menuliskan semicolon sebagai akhir dari sebuah baris perintah dengan mengadopsi teknik yang digunakan oleh BCPL (Basic Combined Programming Language). Alih-alih mewajibkan programmer menuliskan semicolon di akhir setiap baris perintah, maka lexer secara otomatis menambahkan semicolon pada setiap akhir baris kode program yang mana sangat boleh jadi merupakan akhir dari baris perintah (statements). Cara ini efektif. Namun demikian, kita jadi tidak bisa menuliskan { (opening brace) pada 1 baris tersendiri. Karena { sendiri bukanlah perintah.

Mengapa tidak dilakukan pengecekan tambahan saja, sehingga lexer bisa memperbolehkan penulisan { pada baris tersendiri. Perancang Go tidak menghendaki hal tersebut karena Go memiliki fasilitas pengaturan penulisan kode program (code formatting) yakni gofmt. Jadi biar lebih mudah dan lebih seragam, dipilih saja format penulisan dengan tidak memperbolehkan penulisan opening brace pada baris tersendiri.

Wah, pemaksaan nih. Mengekang kebebasan. Saya adalah penganut penulisan { pada baris tersendiri. Jadi gak nyaman ini, hehehe.

Sudahlah. Go adalah Go. Kita ikuti saja aturannya.

Selamat belajar.

 

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.