Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

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.

 

Add a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>