Artikel ini merupakan bagian dari seri Belajar Golang Dari Dasar

Error Interface

Bahasa pemrograman Go memiliki sebuah interface khusus yang digunakan sebagai kontrak ketika membuat error. Interface tersebut bernama error. Interface ini memiliki sebuah function bernama Error dengan return value string. Berikut ini kode interface error milik Golang.

type error interface {
  Error() string
}

Membuat Error di Golang

Untuk membuat error di Golang, kita bisa membuat struct yang memiliki function Error sehingga memenuhi kontrak error interface milik Golang. Tapi, daripada kita membuat struct secara manual, kita bisa memanfaatkan helper yang disediakan oleh Golang, berada dalam package errors.

Perhatikan contoh kode berikut untuk membuat error di Golang.

package main

import (
	"errors"
	"fmt"
	"strings"
)

func Uppercase(text string) (string, error) {
	if text == "" {
		return "", errors.New("Text tidak boleh kosong")
	}
	return strings.ToUpper(text), nil
}

func main() {
	result, err := Uppercase("")
	if err == nil {
		fmt.Println(result)
	} else {
		fmt.Println("Error:", err.Error())
	}
}

output:

Error: Text tidak boleh kosong

Pada contoh kode di atas, kita membuat sebuah function bernama Uppercase yang akan merubah text menjadi uppercase. Function tersebut mengembalikan dua buah data yaitu string sebagai hasil dari konversi uppercase, dan error sebagai error ketika text berisi string kosong.

Berikutnya pada function main kita masukkan hasil dari function Uppercase ke dalam variabel result dan err. Kemudian, kita membuat pengujian kondisi sederhana jika variabel err datanya adalah nil maka kita cetak hasilnya, sedangkan jika variabel err tidak berisi nil berarti ada error yang terjadi. Kita cetak errornya.

Kamu mungkin sedikit bingung kenapa function mengembalikan hasil dan error secara bersamaan. Di dalam bahasa pemrograman Go, function yang bisa mengembalikan error memang sudah biasa dituliskan dengan format seperti itu. Kamu bisa melihat contoh-contoh library yang dibuat oleh para programmer Go. Mereka sering menuliskannya seperti itu.

Berikutnya: #33: Type Assertions

Bagikan:

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.

Lightbox