8. Variabel

Golang mengadopsi dua jenis penulisan variabel, yang dituliskan tipe data-nya dan yang tidak. Kedua cara tersebut valid dan tujuannya sama, pembedanya hanya cara penulisannya saja.

Pada bab ini akan dikupas tuntas tentang macam-macam cara deklarasi variabel.

8.1. Deklarasi Variabel Dengan Tipe Data

Golang memiliki aturan cukup ketat dalam hal penulisan variabel. Ketika deklarasi, tipe data yg digunakan harus dituliskan juga. Istilah lain dari konsep ini adalah manifest typing.

Berikut adalah contoh cara pembuatan variabel yang tipe datanya harus ditulis.

package main

import "fmt"

func main() {
    var firstName string = "john"

    var lastName string
    lastName = "wick"

    fmt.Printf("halo %s %s!\n", firstName, lastName)
}

Keyword var di atas digunakan untuk deklarasi variabel, contohnya bisa dilihat pada firstName dan lastName.

Nilai variabel firstName diisi langsung ketika deklarasi, berbeda dibanding lastName yang nilainya diisi setelah baris kode deklarasi, hal seperti ini diperbolehkan di Golang.

Menampilkan isi variabel

8.2. Deklarasi Variabel Menggunakan Keyword var

Pada kode di atas bisa dilihat bagaimana sebuah variabel dideklarasikan dan di-set nilainya. Keyword var digunakan untuk membuat variabel baru.

Skema penggunaan keyword var:

var <nama-variabel> <tipe-data>
var <nama-variabel> <tipe-data> = <nilai>

Contoh:

var lastName string
var firstName string = "john"

Nilai variabel bisa di-isi langsung pada saat deklarasi variabel.

8.3. Penggunaan Fungsi fmt.Printf()

Fungsi ini digunakan untuk menampilkan output dalam bentuk tertentu. Kegunaannya sama seperti fungsi fmt.Println(), hanya saja struktur outputnya didefinisikan di awal.

Perhatikan bagian "halo %s %s!\n", karakter %s disitu akan diganti dengan data string yang berada di parameter ke-2, ke-3, dan seterusnya.

Ketiga baris kode di bawah ini menghasilkan output yang sama, meskipun cara penulisannya berbeda.

fmt.Printf("halo john wick!\n")
fmt.Printf("halo %s %s!\n", firstName, lastName)
fmt.Println("halo", firstName, lastName + "!")

Tanda plus (+) jika ditempatkan di antara string, fungsinya adalah untuk penggabungan string (istilah lainnya: concatenation).

Fungsi fmt.Printf() tidak menghasilkan baris baru di akhir text, oleh karena itu digunakanlah literal \n untuk memunculkan baris baru di akhir. Hal ini sangat berbeda jika dibandingkan dengan fungsi fmt.Println() yang secara otomatis menghasilkan new line (baris baru) di akhir.

8.4. Deklarasi Variabel Tanpa Tipe Data

Selain manifest typing, Golang juga mengadopsi metode type inference, yaitu metode deklarasi variabel yang tipe data-nya ditentukan oleh tipe data nilainya, cara kontradiktif jika dibandingkan dengan cara pertama. Dengan metode jenis ini, keyword var dan tipe data tidak perlu ditulis.

var firstName string = "john"
lastName := "wick"

fmt.Printf("halo %s %s!\n", firstName, lastName)

Variabel lastName dideklarasikan dengan menggunakan metode type inference. Penandanya tipe data tidak dituliskan pada saat deklarasi. Pada penggunaan metode ini, operand = harus diganti dengan := dan keyword var dihilangkan.

Tipe data lastName secara otomatis akan ditentukan menyesuaikan value atau nilai-nya. Jika nilainya adalah berupa string maka tipe data variabel adalah string. Pada contoh di atas, nilainya adalah string "wick".

Diperbolehkan untuk tetap menggunakan keyword var pada saat deklarasi meskipun tanpa menuliskan tipe data, dengan ketentuan tidak menggunakan tanda :=, melainkan tetap menggunakan =.

// menggunakan var, tanpa tipe data, menggunakan perantara "="
var firstName = "john"

// tanpa var, tanpa tipe data, menggunakan perantara ":="
lastName := "wick"

Kedua deklarasi di atas maksudnya sama. Silakan pilih yang nyaman di hati.

Tanda := hanya digunakan sekali di awal pada saat deklarasi. Untuk assignment nilai selanjutnya harus menggunakan tanda =, contoh:

lastName := "wick"
lastName = "ethan"
lastName = "bourne"

8.5. Deklarasi Multi Variabel

Golang mendukung metode deklarasi banyak variabel secara bersamaan, caranya dengan menuliskan variabel-variabel-nya dengan pembatas tanda koma (,). Untuk pengisian nilainya-pun diperbolehkan secara bersamaan.

var first, second, third string
first, second, third = "satu", "dua", "tiga"

Pengisian nilai juga bisa dilakukan bersamaan pada saat deklarasi. Caranya dengan menuliskan nilai masing-masing variabel berurutan sesuai variabelnya dengan pembatas koma (,).

var fourth, fifth, sixth string = "empat", "lima", "enam"

Kalau ingin lebih ringkas:

seventh, eight, ninth := "tujuh", "delapan", "sembilan"

Dengan menggunakan teknik type inference, deklarasi multi variabel bisa dilakukan untuk variabel-variabel yang tipe data satu sama lainnya berbeda.

one, isFriday, twoPointTwo, say := 1, true, 2.2, "hello"

Istimewa bukan? Istimewa sekali.

8.6. Variabel Underscore _

Golang memiliki aturan unik yang jarang dimiliki bahasa lain, yaitu tidak boleh ada satupun variabel yang menganggur. Artinya, semua variabel yang dideklarasikan harus digunakan. Jika ada variabel yang tidak digunakan tapi dideklarasikan, error akan muncul dan program tidak bisa di-run ataupun di-compile.

Variabel pengangguran

Underscore (_) adalah predefined variabel yang bisa dimanfaatkan untuk menampung nilai yang tidak dipakai. Bisa dibilang variabel ini merupakan keranjang sampah.

_ = "belajar Golang"
_ = "Golang itu mudah"
name, _ := "john", "wick"

Pada contoh di atas, variabel name akan berisikan text john, sedang nilai wick ditampung oleh variabel underscore, menandakan bahwa nilai tersebut tidak akan digunakan.

Variabel underscore adalah predefined, jadi tidak perlu menggunakan := untuk pengisian nilai, cukup dengan = saja. Namun khusus untuk pengisian nilai multi variabel yang dilakukan dengan metode type inference, boleh didalamnya terdapat variabel underscore.

Biasanya variabel underscore sering dimanfaatkan untuk menampung nilai balik fungsi yang tidak digunakan.

Perlu diketahui, bahwa isi variabel underscore tidak dapat ditampilkan. Data yang sudah masuk variabel tersebut akan hilang. Ibarat blackhole, sekali masuk, tidak akan bisa keluar 😁

8.7. Deklarasi Variabel Menggunakan Keyword new

Keyword new digunakan untuk mencetak data pointer dengan tipe data tertentu. Nilai data default-nya akan menyesuaikan tipe datanya.

name := new(string)

fmt.Println(name)   // 0x20818a220
fmt.Println(*name)  // ""

Variabel name menampung data bertipe pointer string. Jika ditampilkan yang muncul bukanlah nilainya melainkan alamat memori nilai tersebut (dalam bentuk notasi heksadesimal). Untuk menampilkan nilai aslinya, variabel tersebut perlu di-dereference terlebih dahulu, menggunakan tanda asterisk (*).

Mungkin untuk sekarang banyak yang akan bingung tentang apa itu pointer, namun tak apa, karena nantinya di bab 22 akan dikupas habis topik pointer dan dereference.

8.8. Deklarasi Variabel Menggunakan Keyword make

Keyword ini hanya bisa digunakan untuk pembuatan beberapa jenis variabel saja, yaitu:

  • channel
  • slice
  • map

Dan lagi, mungkin banyak yang akan bingung. Ketika sudah masuk ke pembahasan masing-masing poin tersebut, akan terlihat apa kegunaan dari keyword make ini.

results matching ""

    No results matching ""