Belajar GoLang #1


Febrian Dwi Putra
manusia bertipe data laki-laki

hola teman-teman, ingat engga ?? artikel sebelumnya kita sudah belajar bagaimana instalasi golang pada linux alphine. pada artikel kali ini akan membahas secara singkat tentang golang. apa saja sih yang ada didalam golang ??. tentunya penasarnkan. nah bisa dikatakan pada artikel ini hanya membahas ringkasan hal-hal dasar saja. untuk lebih lengkapnya mimin kasih link untuk belajar lebih dalam lagi. boleh dikunjungi dokumentasi golang indonesia atau situs mas novalagung.com. tenang kedua situs sudah diterjemahkan ke bahasa indonesia kok. okedah mari kita bahas si golang ini. hehe :)

1. Packages

mungkin ini hal mainstream ya, seperti halnya bahasa pemprograman masa kini. golang memiliki sebuah packages. gunanya agar bisa memanggil paket yang disediakan oleh golang secara bawaan maupun memanggil dari modul yang kita buat. cara memanggilnya juga mudah kok.

import "fmt"

trus, gimana kalau memanggil banyak paket ? bisa dong... :)

misal kayak contoh dibawah ini (memanggil 2 paket bawaan golang) :

import(
  "fmt"
  "math/rand"
)

apa nama paket yang dimuat pada penulisan akan sama dengan penggunaan. paket fmt sendiri merupakan penerapan dari fungsi variadic pada golang. golang menganut konsep fungsi variadic atau pembuatan fungsi dengan parameter sejenis yang tak terbatas. Maksud tak terbatas disini adalah jumlah parameter yang disisipkan ketika pemanggilan fungsi bisa berapa saja. parameter variadic memiliki sifat yang mirip dengan slice. Nilai dari parameter-parameter yang disisipkan bertipe data sama, dan ditampung oleh sebuah variabel saja. Cara pengaksesan tiap datanya juga sama, dengan menggunakan index. sedangkan paket math/rand merupakan paket membantu membuat angka acak. kedua fungsi diatas merupakan fungsi pada paket bawaan golang.

contoh pengaplikasinya dari paket diatas, jadi seperti ini :

fmt.Println("Holaa Go Go lang")
rand.Seed(1413241234)
var angkaAcak int = rand.Intn(15)

oh iya, yang diatas kan cara kita memanggil paket bawaan dari golang. sekarang bagaimana cara membuat modul paket dan memuatnya. misal nih kita buat modul simple nampilin umur kita dan kasih proses pembagian pada umur kita. buat file baru, kita beri nama umur.go.

// umur.go
package umur
var Umur=24
func Bagiumur() int{
	return Umur/2
}

dalam golang, penamaan pada variable atau fungsi menjadi case kapitalisasi memiliki arti bahwa paket bersifat public sedangkan tipe lower case atau penamaan kecil semua bersifat private.

// main.go
// memanggil paket yang kita buat tadi.
package main
import(
  "fmt"
  "umur"
)
func main(){
  fmt.Println("Hola Dini, Umur = ", umur.Umur, " dan Setengah Dari Umurmu = ", umur.Bagiumur())
}

mari kita jalankan programnya.

$ go run main.go
output -> Hola Dini, Umur = 24 dan Setengah Dari Umurnya = 12

2. Remote Packages

golang ini sangat unik, memiliki kemampuan dapat memanggil/mengeksekusi paket langsung dari remote repository dan memudahkan untuk duplikasi source code pada remote repository juga.

contoh kita memasang program fiber (web framwork) pada go di komputer lokal kita menggunakan " go get “,

go get -u github.com/gofiber/fiber/v2

program perintah ini akan mengeksekusi dari remote repository fiber dan menambahkan ke daftar paket di file ~/go/pkg. selain perintah diatas ada beberapa perintah yang sering digunakan :

  • go mod init untuk inisalisasi projek pada Go (menggunakan Go Modules)
  • go run untuk menjalankan atau eksekusi file program golang (berektensi .go)
  • go test berguna untuk keperluhan unit test
  • go build untuk menghasilkan output file yang bisa di eksekusi (executable) (contoh file .exe pada windows)
  • go mod penggunaan perintah pada go modules pada golang. ada banyak perintah yang bisa kita manfaatkan. misal saja go mod tid untuk validasi dependensi (Jika ada dependensi yang belum ter-download, maka akan otomatis di-download)

sekarang kita bisa menggunakan paket fiber pada program yang dibuat ya kan.

//server.go
package main

import "github.com/gofiber/fiber/v2"

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hola, fiber..... ?!!!")
    })

    app.Listen(":3000")
}

tinggal coba jalanin aja sih :)

$ go run server.go

3. Variable

tentu disetiap bahasa pemprogram ada namanya variable untuk menampung data sementara pada memory. penggunaan variable pada bahasa pemprograman go memiliki format :

var [variable-name] [type]

jika diaplikasikan menjadi begini :

var angkaKu int = 10

jika ingin memuat banyak variable lebih dari satu :

var variableSatu, variableDua int = 10, 20

atau jika ingin memuat lebih banyak variable :

var(
  variableSatu, variableDua, variableTiga int = 1, 2, 3
  variableEmpat string = "hello world"
  variableLima complex64 = 3.14 + 6.28i
)

go juga memiliki cara singkat (shorthand) untuk deklarasi sekaligus initialisasi variable dengan menggunakan operator := . seperti contoh dibawah ini :

//dua cara penulisan
var x int = 99 // biasa
x := 99 // shorthand

ada beberapa type data dalam penulisan bahasa pemprograman go :

bool
string
int  int8  int16  int32  int64 uint uint8 uint16 uint32 uint64 uintptr
byte // alias for uint8
rune // alias for int32, represents a Unicode code point
float32 float64

juga cara untuk deklarasi konstanta (nilai tetap) pada bahasa pemprograman go :

const forever string = "long time" // tipe konstanta (typed const)
const tomorrow = "short time"      // bukan (untyped const)

4. Functions

pembuatan dan gaya penulisan fungsi pada golang seperti penulisan bahasa pemprograman C. namun memiliki sedikit perbedaan. salah satunya saat kita deklarasi fungsi dengan menulis tipe data setelah nama parameternya.

func [function-name]([parameters]) [return-type]

contoh :

func setengah(umur int) int{
  return umur/2
}

namun saat deklarasi dengan nama parameter ganda dengan tipe data sama, kita bisa menulisnya cukup sekali saja.

func hitung(initial,umur int)int{
  return (initial*umur)/2 
}

perubahan besar yang bisa dilihat antara golang dan C saat membuat fungsi yaitu dapat me-return lebih banyak variable.

func sixtyFourty(whole int) (int,int) {
  sixty := whole *6/10
  fourty := whole-sixty
  return sixty, fourty // bisa memuat lebih dari satu variable
}
func main(){
  var onePart, anotherPart int
  onePart, anotherPart = sixtyFourty(99) // penggunaan fungsi dg memasukan multiple value (parameter)
}

oh iya, kita juga bisa pakai gaya penulisan seperti dibawah ini. dengan menuliskan nama parameter dan tidak perluh mereturnnya.

func sixtyFourty(whole int) (sixty, fourty int) {
  sixty = whole *6/10
  fourty = whole-sixty
    return // tidak perluh mendefinisikan nama variable lagi :)
}

5. Structs

dalam penulisan golang tidak mengenal class seperti bahasa pemprograman lainnya, golang menggunakan structs. struct sederhananya sebuah tipe data stuktur pada golang. dalam structs terdapat kumpulan definisi variabel (atau property) dan atau fungsi (atau method), yang dibungkus sebagai tipe data baru dengan nama tertentu. Property dalam struct, tipe datanya bisa bervariasi. Mirip seperti map, hanya saja key-nya sudah didefinisikan di awal, dan tipe data tiap itemnya bisa berbeda.

Dari sebuah struct, kita bisa buat variabel baru, yang memiliki atribut sesuai skema struct tersebut. variabel bisa kita sebut dengan istilah object atau object struct.

secara sederhana penulisan structs seperti berikut :

// gaya penulisan ke bawah
type contoh struct{
  x int 
  y int
  z int
}

// gaya penulisan ke samping
type contoh struct{
  x, y, z int
}

pengaplikasiannya sebagai berikut :

// mobil.go
package mobil

type Mobil struct {
    merk string
    warna string
    tahun int
}

// main.go
package main

import "mobil"
import "fmt"

func main() {
    var kendaraan mobil.Mobil
    kendaraan.merk = "Avanza"
    kendaraan.warna = "biru"
    kendaraan.tahun = 2015

    fmt.Println("merk  :", kendaraan.merk)
    fmt.Println("warna :", kendaraan.warna)
    fmt.Println("tahun :", kendaraan.tahun)
}

pada program mobil.go deklarasikan stuktur dari mobil dan stuktur data tersebut dipanggil atau dimuat ke dalam program main.go yang memproses/mengisi data stuktur data sesuai dengan tipe data dan property.

sekian dulu dari catatan tentang golang. semoga membantu ~ nantikan update selanjutnya. ayeeeee


Febrian Dwi Putra
manusia bertipe data laki-laki

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami

KOMENTAR