1. Variabel dan Konstan
Pada Golang, variabel dan konstan adalah dua konsep mendasar yang memainkan peran sangat penting dalam sebuah program.
- Sebuah variabel adalah suatu pengenal bernama yang digunakan untuk menyimpan data dalam sebuah program. Pada Golang, kata kunci
var
digunakan untuk mendeklarasikan variabel. - Sebuah konstan adalah suatu pengenal yang nilainya tidak dapat diubah dalam program. Pada Golang, kata kunci
const
digunakan untuk mendeklarasikan konstan.
2. Pendeklarasian dan Inisialisasi Variabel Golang
2.1 Pendeklarasian dan Pemberian Nilai untuk Satu Variabel
Dalam bahasa Go, kata kunci var
digunakan untuk mendeklarasikan suatu variabel dengan format var nama_variabel tipe
. Setelah pendeklarasian, variabel dapat diberikan nilai pada kode selanjutnya, atau dapat langsung diinisialisasi pada saat pendeklarasian. Sebagai contoh:
var usia int // Mendeklarasikan variabel bilangan bulat usia
usia = 25 // Memberikan nilai untuk variabel
var nama string = "Alice" // Mendeklarasikan dan menginisialisasi variabel nama
2.2 Pendeklarasian Multiple Variabel
Bahasa Go mendukung pendeklarasian serentak dari beberapa variabel, yang dapat membuat kode lebih ringkas. Pendeklarasian secara massal biasanya dilakukan di awal suatu fungsi atau pada level paket. Sebagai contoh:
var (
namaDepan, namaBelakang string
usia int
)
namaDepan = "John"
namaBelakang = "Doe"
usia = 30
Pada pendeklarasian massal di atas, namaDepan
dan namaBelakang
dideklarasikan sebagai string, sementara usia
adalah bilangan bulat.
2.3 Inferensi Tipe dan Pendeklarasian Variabel Pendek
Dalam bahasa Go, tidak selalu perlu secara eksplisit menyebutkan tipe dari variabel. Jika terdapat ekspresi inisialisasi saat mendeklarasikan variabel, Go dapat menginferensi tipe dari variabel tersebut. Hal ini dikenal sebagai inferensi tipe. Pendeklarasian variabel pendek menggunakan :=
dapat menyederhanakan pernyataan untuk mendeklarasikan dan menginisialisasi variabel berdasarkan inferensi tipe. Sebagai contoh:
kota := "Beijing" // Menggunakan pendeklarasian variabel pendek untuk secara serentak mendeklarasikan dan menginisialisasi kota
negara := "China" // tipe negara diinferensi sebagai tipe string
Perlu dicatat bahwa pendeklarasian variabel pendek hanya dapat digunakan di dalam fungsi dan tidak dapat digunakan pada cakupan global.
2.4 Pendeklarasian Variabel di Luar Fungsi
Variabel yang dideklarasikan di luar fungsi memiliki cakupan level paket. Variabel-varibel ini terlihat dan dapat diakses di seluruh paket. Sebagai contoh:
var globalVar string = "Saya adalah variabel global" // Pendeklarasian variabel global
func cetakGlobalVar() {
fmt.Println(globalVar) // Mengakses variabel global di dalam fungsi
}
Variabel global dapat digunakan antar fungsi di dalam paket, namun perlu digunakan dengan hati-hati untuk menghindari konflik nama dan referensi yang tidak jelas.
Tip: Memahami kode fungsi dasar di sini sudah cukup, penjelasan detail tentang fungsi akan diberikan pada bagian-bagian selanjutnya.
3. Tipe Data Dasar dan Nilai Nol
3.1 Tipe Data Dasar dalam Golang
Dalam bahasa Go, setiap tipe variabel menyediakan semantik eksplisit dan karakteristik perilaku. Berikut adalah beberapa tipe data dasar yang umum:
-
int
,int8
,int16
,int32
,int64
: Rentang yang berbeda dari bilangan bulat -
uint
,uint8
,uint16
,uint32
,uint64
: Bilangan bulat tanpa tanda -
float32
,float64
: Bilangan desimal -
bool
: Nilai boolean (benar atau salah) -
string
: Teks
3.2 Konsep Nilai Nol
Dalam bahasa Go, variabel secara otomatis diinisialisasi dengan nilai nol dari tipe mereka setelah pendeklarasian. Nilai nol mengacu pada nilai default dari tipe yang sesuai ketika suatu variabel tidak diinisialisasi secara eksplisit. Hal ini tidak umum dalam beberapa bahasa lain, namun dalam Go, ini memastikan bahwa semua variabel selalu memiliki nilai awal yang valid. Berikut adalah nilai nol untuk setiap tipe data dasar:
- Nilai nol untuk sebuah bilangan bulat adalah
0
- Nilai nol untuk sebuah bilangan desimal adalah
0.0
- Nilai nol untuk sebuah nilai boolean adalah
false
- Nilai nol untuk sebuah string adalah string kosong
""
Sebagai contoh:
var i int // Nilai nol adalah 0
var f float64 // Nilai nol adalah 0.0
var b bool // Nilai nol adalah false
var s string // Nilai nol adalah ""
Memahami konsep nilai nol ini sangat penting, karena ini dapat membantu pengembang memahami perilaku inisialisasi variabel dan dapat digunakan untuk mencegah kesalahan pointer null atau tidak terinisialisasi.
4. Lingkup Variabel
4.1 Variabel Lokal
Variabel lokal adalah variabel yang didefinisikan dalam sebuah fungsi, dan hanya dapat diakses di dalam fungsi tersebut. Parameter fungsi juga termasuk dalam variabel lokal. Mulai dari saat dibuat, hingga eksekusi fungsi selesai, variabel lokal akan menghilang. Setiap kali fungsi dipanggil, variabel lokal akan dibuat ulang.
func contohVariabelLokal() {
var variabelLokal int = 10 // Ini adalah variabel lokal
fmt.Println(variabelLokal)
}
func main() {
contohVariabelLokal() // Output: 10
// fmt.Println(variabelLokal) // Ini akan menyebabkan error kompilasi karena variabelLokal tidak terlihat di sini
}
Pada contoh di atas, variabelLokal
hanya dapat diakses di dalam fungsi contohVariabelLokal
.
4.2 Variabel Global
Variabel global adalah variabel yang didefinisikan di luar fungsi, dan dapat diakses di dalam file mana pun dalam paket yang sama. Jika Anda ingin menggunakan variabel global di paket lain, nama variabel tersebut harus dimulai dengan huruf kapital, sesuai dengan aturan kontrol akses Go.
package main
import "fmt"
var variabelGlobal int = 20 // Ini adalah variabel global
func main() {
fmt.Println(variabelGlobal) // Output: 20
ubahGlobal()
fmt.Println(variabelGlobal) // Output: 30
}
func ubahGlobal() {
variabelGlobal = 30 // Mengubah nilai variabel global
}
Pada contoh ini, variabelGlobal
terlihat di kedua fungsi main
dan ubahGlobal
.
5 Pendefinisian dan Penggunaan Konstanta
5.1 Kata Kunci const
Kita menggunakan kata kunci const
untuk mendefinisikan konstanta. Konstanta adalah nilai yang tidak dapat diubah dan setelah didefinisikan, nilai mereka tidak dapat diubah. Konstanta bisa berupa jenis data dasar seperti bilangan bulat, bilangan pecahan, boolean, atau string.
const Pi = 3.14 // Mendeklarasikan konstanta float
const StrConst string = "Hello, World!" // Mendeklarasikan konstanta string
func main() {
fmt.Println(Pi)
fmt.Println(StrConst)
}
5.2 Konstanta Enum
Bahasa Go tidak memiliki tipe enumerasi khusus, tetapi Anda dapat menggunakan kata kunci iota
untuk mencapai enumerasi. Dalam blok const
, setiap deklarasi konstanta tambahan akan menambahkan nilai iota
sebesar 1.
const (
Minggu = iota // 0
Senin // 1
Selasa // 2
Rabu // 3
Kamis // 4
Jumat // 5
Sabtu // 6
)
func main() {
fmt.Println(Minggu) // Output: 0
fmt.Println(Sabtu) // Output: 6
}
Kode di atas mendeklarasikan enumerasi untuk hari-hari dalam seminggu, di mana iota
diinisialisasi menjadi 0 dalam blok const
dan bertambah 1 untuk setiap deklarasi selanjutnya.
5.3 Ruang Lingkup Konstanta
Ruabg lingkup konstanta mirip dengan variabel. Jika sebuah konstanta didefinisikan di dalam sebuah fungsi, ruang lingkupnya terbatas pada fungsi tersebut. Jika sebuah konstanta didefinisikan di luar fungsi (secara global), ruang lingkupnya adalah seluruh paket, dan jika huruf pertamanya adalah huruf kapital, konstanta tersebut bisa diakses di paket lain.
Mengelola ruang lingkup konstanta membantu mengurangi polusi ruang lingkup global dan meningkatkan keterbacaan dan kemudahan pemeliharaan program.
const KonstantaGlobal = "Ini adalah konstanta global"
func main() {
const KonstantaLokal = "Ini adalah konstanta lokal"
fmt.Println(KonstantaGlobal) // Ini valid
fmt.Println(KonstantaLokal) // Ini valid
}
func fungsiLain() {
// fmt.Println(KonstantaLokal) // Ini akan menyebabkan error kompilasi: KonstantaLokal tidak terlihat di fungsi ini
fmt.Println(KonstantaGlobal) // Ini valid
}
Pada contoh ini, KonstantaLokal
hanya bisa diakses di dalam fungsi main
, sementara KonstantaGlobal
bisa diakses di seluruh paket.