Error Yang Sering Ditemui Pada Golang

Short Story

Ketika ngoding dalam bahasa GO, saya menemui beberapa error yang sering muncul saat proses running. Nah, pada kali ini saya coba rangkumin beberapa error yg saya temukan, penyebabnya, serta solusinya. Tentunya nanti akan diupdate kembali jika menemukan error dengan tipe yang lain 😀

1. Nil pointer dereference

Nah, error ini bakal sering kalian alami dan temukan jika sebelumnya tidak pernah memakai bahasa pemrograman yang menggunakan pointer atau *. Error ini kadang cukup membuat frustasi, karena di golang exception errornya menurut saya "agak" kurang manusiawi sehingga sangat sulit dibaca, file apa, line berapa dan kadang keluar alamat memory yang cukup "menyeramkan" seperti failOnPanic(0x1400039e340) hehe 😀

Oke kita langsung saja ke contoh kasusnya, jadi semisal saya punya kode seperti dibawah ini:

package main

import (
    "fmt"
)

type Mahasiswa struct {
    name string
    sks int
}

func (m *Mahasiswa) sedangSkripsi()bool{
    if m.sks >= 144 {
        return true
    } else {
        return false
    }
}


func main() {
    var budi *Mahasiswa
    budi.sks = 144
    fmt.Println(budi.sedangSkripsi())
}

Jika di run, maka akan menghasilkan error panic: runtime error: invalid memory address or nil pointer dereference, Kenapa?

Ternyata variabel budi yang tipenya pointer struct adalah nil yang menyebabkan invalid memory/address. Gampangannya belum reserved tempat memory tapi pake alamat memory. Solusinya gimana?

Ada 2 cara nih, pertama pake new(Mahasiswa) atau sekalian tanpa pointer jadi var budi Mahasiswa:

func (m *Mahasiswa) sedangSkripsi()bool{
    if m.sks >= 144 {
        return true
    } else {
        return false
    }
}


func main() {
    var budi *Mahasiswa = new(Mahasiswa)
    budi.sks = 144
    fmt.Println(budi.sedangSkripsi())
}

atau

func (m *Mahasiswa) sedangSkripsi()bool{
    if m.sks >= 144 {
        return true
    } else {
        return false
    }
}


func main() {
    var budi Mahasiswa
    budi.sks = 144
    fmt.Println(budi.sedangSkripsi())
}

Sekian, nanti diupdate lagi jika menemukan error kembali. semoga bermanfaat ya 😀

About the author

Hey, I'm Ubaidillah Hakim Fadly, a software engineer, stock investor, and entrepreneur. I publish articles and tutorials about programming and devOps from my own research.

Get the newsletterBuy me a coffee

Ubaidillah