Go-Lang Standard Library
Eko Kurniawan Khannedy
Eko Kurniawan Khannedy
- Technical architect at one of the biggest
ecommerce company in Indonesia
- 12+ years experiences
- [Link]
- [Link]/c/ProgrammerZamanNow
Eko Kurniawan Khannedy
● Telegram : @khannedy
● Linkedin : [Link]
● Facebook : [Link]/ProgrammerZamanNow
● Instagram : [Link]/programmerzamannow
● Youtube : [Link]/c/ProgrammerZamanNow
● Telegram Channel : [Link]/ProgrammerZamanNow
● Tiktok : [Link]
● Email : [Link]@[Link]
Sebelum Belajar
● Go-Lang Dasar
Standard Library
Standard Library
● Go-Lang, selain merupakan bahasa pemrograman, Go-Lang juga menyediakan Standard Library
(package bawaan) tanpa harus menggunakan package dari luar buatan orang lain
● Contoh pada Kelas Go-Lang Dasar, kita sudah belajar package bernama fmt atau errors
● Selain package tersebut, sebenarnya masih banyak package lainnya yang bisa kita gunakan
● Pada materi ini, kita akan coba bahas lebih detail package-package yang terdapat sebagai Standard
Library di Go-Lang yang sering digunakan saat kita membuat aplikasi
● [Link]
Membuat Project
Membuat Project
● Buatlah folder belajar-golang-standard-library
● go mod init belajar-golang-standard-library
Package fmt
Package fmt
● Sebelumnya kita sudah sering menggunakan package fmt dengan menggunakan function Println
● Selain Println, masih banyak function yang terdapat di package fmt, contohnya banyak digunakan
untuk melakukan format
● [Link]
Kode : Package fmt
Package errors
Package errors
● Sebelumnya kita sudah membahas tentang interface error yang merupakan representasi dari error
di Go-Lang, dan membuat error menggunakan function [Link]()
● Sebenarnya masih banyak yang bisa kita lakukan menggunakan package errors, contohnya ketika
kita ingin membuat beberapa value error yang berbeda
● [Link]
Kode : Membuat Error
Kode : Menggunakan Error
Mengecek Jenis Error
● Misal kita membuat jenis error sendiri, lalu kita ingin mengecek jenis errornya
● Kita bisa menggunakan [Link]() untuk mengecek jenis type error nya
Kode : Mengecek Jenis Error
Package os
Package os
● Go-Lang telah menyediakan banyak sekali package bawaan, salah satunya adalah package os
● Package os berisikan fungsionalitas untuk mengakses fitur sistem operasi secara independen (bisa
digunakan disemua sistem operasi)
● [Link]
Kode Program Package os (1)
Kode Program Package os (2)
Package flag
Package flag
● Package flag berisikan fungsionalitas untuk memparsing command line argument
● [Link]
Kode Program Package flag
Package strings
Package strings
● Package strings adalah package yang berisikan function-function untuk memanipulasi tipe data
String
● Ada banyak sekali function yang bisa kita gunakan
● [Link]
Beberapa Function di Package strings
Function Kegunaan
[Link](string, cutset) Memotong cutset di awal dan akhir string
[Link](string) Membuat semua karakter string menjadi lower case
[Link](string) Membuat semua karakter string menjadi upper case
[Link](string, separator) Memotong string berdasarkan separator
[Link](string, search) Mengecek apakah string mengandung string lain
[Link](string, from, to) Mengubah semua string dari from ke to
Kode Program Package strings
Package strconv
Package strconv
● Sebelumnya kita sudah belajar cara konversi tipe data, misal dari int32 ke int34
● Bagaimana jika kita butuh melakukan konversi yang tipe datanya berbeda? Misal dari int ke string,
atau sebaliknya
● Hal tersebut bisa kita lakukan dengan bantuan package strconv (string conversion)
● [Link]
Beberapa Function di Package strconv
Function Kegunaan
[Link](string) Mengubah string ke bool
[Link](string) Mengubah string ke float
[Link](string) Mengubah string ke int64
[Link](bool) Mengubah bool ke string
[Link](float, … ) Mengubah float64 ke string
[Link](int, … ) Mengubah int64 ke string
Kode Program Package strconv
Package math
Package math
● Package math merupakan package yang berisikan constant dan fungsi matematika
● [Link]
Beberapa Function di Package math
Function Kegunaan
[Link](float64) Membulatkan float64 keatas atau kebawah, sesuai
dengan yang paling dekat
[Link](float64) Membulatkan float64 kebawah
[Link](float64) Membulatkan float64 keatas
[Link](float64, float64) Mengembalikan nilai float64 paling besar
[Link](float64, float64) Mengembalikan nilai float64 paling kecil
Kode Program Package math
Package container/list
Package container/list
● Package container/list adalah implementasi struktur data double linked list di Go-Lang
● [Link]
Struktur Data Double Linked List
Kode Program Package container/list
Package container/ring
Package container/ring
● Package container/ring adalah implementasi struktur data circular list
● Circular list adalah struktur data ring, dimana diakhir element akan kembali ke element awal
(HEAD)
● [Link]
Struktur Data Circular List
Kode Program Package container/ring
Package sort
Package sort
● Package sort adalah package yang berisikan utilitas untuk proses pengurutan
● Agar data kita bisa diurutkan, kita harus mengimplementasikan kontrak di interface [Link]
● [Link]
[Link]
Kode Program Package sort (1)
Kode Program Package sort (2)
Kode Program Package sort (3)
Package time
Package time
● Package time adalah package yang berisikan fungsionalitas untuk management waktu di Go-Lang
● [Link]
Beberapa Function di Package time
Function Kegunaan
[Link]() Untuk mendapatkan waktu saat ini
[Link](...) Untuk membuat waktu
[Link](layout, string) Untuk memparsing waktu dari string
Kode Program Package time
Duration
● Saat menggunakan tipe data waktu, kadang kita butuh data berupa durasi
● Package tipe memiliki type Duration, yang sebenarnya adalah alias untuk int64
● Namun terdapat banyak method yang bisa kita gunakan untuk memanipulasi Duration
Kode : Duration
Package reflect
Package reflect
● Dalam bahasa pemrograman, biasanya ada fitur Reflection, dimana kita bisa melihat struktur kode
kita pada saat aplikasi sedang berjalan
● Hal ini bisa dilakukan di Go-Lang dengan menggunakan package reflect
● Fitur ini mungkin tidak bisa dibahas secara lengkap dalam satu video, Anda bisa eksplorasi package
reflec ini secara otodidak
● Reflection sangat berguna ketika kita ingin membuat library yang general sehingga mudah
digunakan
● [Link]
Kode Program Package reflect
Kode Program StructTag
Kode Program Validation Library
Package regexp
Package regexp
● Package regexp adalah utilitas di Go-Lang untuk melakukan pencarian regular expression
● Regular expression di Go-Lang menggunakan library C yang dibuat Google bernama RE2
● [Link]
● [Link]
Beberapa Function di Package regexp
Function Kegunaan
[Link](string) Membuat Regexp
[Link](string) bool Mengecek apakah Regexp match dengan string
[Link](string, max) Mencari string yang match dengan maximum jumlah
hasil
Kode Program Package regexp
Package encoding
Package encoding
● Golang menyediakan package encoding untuk melakukan encode dan decode
● [Link]
● Golang menyediakan berbagai macam algoritma untuk encoding, contoh yang populer adalah
base64, csv dan json
Kode : Base64
Kode : CSV Reader
Kode : CSV Writer
Package slices
Package slices
● Di Golang versi terbaru, terdapat fitur bernama Generic, fitur ini akan kita bahas khusus dikelas
Golang Generic
● Fitur Generic ini membuat kita bisa membuat parameter dengan tipe yang bisa berubah-ubah,
tanpa harus menggunakan interface kosong / any
● Salah satu package yang menggunakan fitur Generic ini adalah package slices
● Package slices ini digunakan untuk memanipulasi data di slice
● [Link]
Kode : Package slices
Package path
Package path
● Package path digunakan untuk memanipulasi data path seperti path di URL atau path di File
System
● Secara default Package path menggunakan slash sebagai karakter path nya, oleh karena itu cocok
untuk data URL
● [Link]
● Namun jika ingin menggunakan untuk memanipulasi path di File System, karena Windows
menggunakan backslash, maka khusus untuk File System, perlu menggunakan pacakge
path/filepath
● [Link]
Kode : Package path
Kode : Package path/filepath
Package io
Package io
● IO atau singkatan dari Input Output, merupakan fitur di Golang yang digunakan sebagai standard
untuk proses Input Output
● Di Golang, semua mekanisme input output pasti mengikuti standard package io
● [Link]
Reader
● Untuk membaca input, Golang menggunakan kontrak interface bernama Reader yang terdapat di
package io
Writer
● Untuk menulis ke output, Golang menggunakan kontrak interface bernama Writer yang terdapat
di package io
Implementasi IO
● Penggunaan dari IO sendiri di Golang terdapat dibanyak package, sebelumnya contohnya kita
menggunakan CSV Reader dan CSV Writer
● Karena Package IO sebenarnya hanya kontrak untuk IO, untuk implementasinya kita harus lakukan
sendiri
● Tapi untungnya, Golang juga menyediakan package untuk mengimplementasikan IO secara mudah,
yaitu menggunakan package bufio
Package bufio
Package bufio
● Package bufio atau singkatan dari buffered io
● Package ini digunakan untuk membuat data IO seperti Reader dan Writer
● [Link]
Kode : Reader
Kode : Writer
File Manipulation
File Management
● Di package os, terdapat File Management, namun sengaja ditunda pembahasannya, karena kita
harus tahu dulu tentang IO
● Saat kita membuat atau membaca file menggunakan Package os, struct File merupakan
implementasi dari [Link] dan [Link]
● Oleh karena itu, kita bisa melakukan baca dan tulis terhadap File tersebut menggunakan Package
io / bufio
Open File
● Untuk membuat / membaca File, kita bisa menggunakan [Link](name, flag, permission)
● name berisikan nama file, bisa absolute atau relative / local
● flag merupakan penanda file, apakah untuk membaca, menulis, dan lain-lain
● permission, merupakan permission yang diperlukan ketika membuat file, bisa kita simulasikan
disini : [Link]
File Flag di Package os
Kode : Membuat File Baru
Kode : Membaca File
Kode : Membaca dan Menambah ke File
Package Lainnya
Package Lainnya
● Sebenernya masih ada beberapa package lainnya yang tidak akan dibahas dikelas ini
● Hal ini dikarenakan package tersebut terlalu kompleks jika harus dibahas dalam 1 chapter, oleh
karena itu package-package berikut akan dibahas di kelas tersendiri, seperti :
● Package Context, Net, Testing, Template, Database, JSON dan Embed
Materi Selanjutnya
Materi Selanjutnya
● Go-Lang Modules
● Go-Lang Unit Test
● Go-Lang Goroutine
● Go-Lang Database
● Go-Lang Web