Menggunakan package os untuk mengambil argument

Golang – Package bawaan

Pada artikel sebelumnya kita telah belajar apa itu package initialization pada bahasa pemrogaman go atau golang. apabila anda belum mengikuti artikel sebelumnya saya sarankan anda untuk membaca artikel sebelumnya tentang Golang – Pengenalan dan cara menggunakan package initialization. Dan artikel kali ini kita akan membahas package bawaan yang sudah tersedia pada bahasa pemrogaman go secara default.

Package bawaan

Package bawaan adalah sekumpulan package yang sudah tersedia secara default pada golang, kita bisa lengsung menggunakan package-package tersebut, contoh nya seperti package fmt yang sudah sering kita gunakan. Kali ini kita akan mencoba menggunakan package bawaan yang sering digunakan. Untuk detail package lainnya bisa di lihat pada https://pkg.go.dev/

Package OS

Golang telah menyediakan banyak sekali package bawaan, salah satunya adalah package os, jadi package os berisikan fungsionalitas untuk mengakses fitur sistem operasi secara independen (bisa digunakan di semua sistem operasi), artinya walau kita membuat aplikasi untuk mengakses fitur os di sistem operasi linux seperti yang saya gunakan, ini tetap dapat dijalankan di sistem operasi lain seperti windows atau mac. Untuk dokumentasi lengkap nya bisa di lihat di https://pkg.go.dev/os

Contoh penggunaan package os untuk mengambil argument saat program dijalankan

package main

import (
	"fmt"
	"os"
)

func main() {
	args := os.Args
	fmt.Println("Argument", args)

	fmt.Println(args[1])
	fmt.Println(args[2])
}
Menggunakan package os untuk mengambil argument
Menggunakan package os untuk mengambil argument

Perhatikan baris kode diatas, dimana pertama kita melakukan import package os kemudian kita menggunakan method Args dari os yang digunakan untuk mengambil argument saat program di jalankan dan menyimpan isinya pada variable args di baris 9. Coba jalankan baris kode diatas dengan menambahkan beberapa value di depannya.

Output pengambilan argument dengan package os
Output pengambilan argument dengan package os

Bisa di lihat hasilnya jika ter dapat 3 data, yang mana 2 data nya adalah nilai argument yang kita masukkan saat menjalankan program, untuk data pertama adalah data default yang mengembalikan tempat atau path program kita di build.

Package flag

Package flag erat kaitannya dengan package os yang sudah kita coba sebelumnya, yang dimana dengan package os kita bisa mengambil argument saat program kita dijalankan, nah dengan package flag kita bisa mempersing argument yang dikirim, misal jika kita ingin menambahkan --namaArgument di depan arugment agar lebih mudah dibaca dan digunakan maka kita bisa memanfaatkan package flag

package main

import (
	"flag"
	"fmt"
)

func main() {
	var username string
	var password string

	flag.StringVar(&username, "username", "root", "Pass your username")
	flag.StringVar(&password, "password", "root", "Pass your password")

	flag.Parse()

	fmt.Println(username)
	fmt.Println(password)
}
Menggunakan flag dalam mengambil argument
Menggunakan flag dalam mengambil argument

Pada kode diatas kita membuat variable username & password yang digunakan untuk menampung data argument nantinya, nah untuk salah satu cara penggunaan nya cukup sederhana, kita bisa menggunakan method StringVar(&namavariable, "namaFlag", "nilaiDefault", "keterangan"). Selanjutnya jangan lupa memanggil method Parse di baris ke 15, karena jika tidak maka argument tidak akan di parse. Coba jalankan program seperti berikut

Output flag pada golang
Output flag pada golang

Package strings

Package string adalah package yang berisi function-function untuk memanipulasi data string. Ada banyak sekali function yang dapat kita gunakan, untuk detail nya bisa di cek pada laman https://pkg.go.dev/strings

Berikut kita akan mencoba beberapa function yang sering digunakan di package strings

FunctionKegunaan
strings.Trim(string, cutset)Memotong cutset di awal dan di akhir string
strings.ToLower(string)Membuat semua karakter string menjadi lower case
strings.ToUpper(string)Membuat semua karakter string menjadi upper case
strings.Split(string, separator)Memotong string berdasarkan separator
strings.Contains(string, search)Mengecek apakah string mengandung string lain
strings.ReplaceAll(string, from, to)Mengubah semua string dari from ke to
Beberapa function di package strings

Contoh baris kode package strings

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Cek apakah terdapat kata rendy di dalam string, return bool
	fmt.Println("Method Contains :", strings.Contains("rendy wijaya", "rendy"))

	// Memecah data string menjadi slice dengan separator spasi
	fmt.Println("Method Split :", strings.Split("Rendy Wijaya", " "))

	// Merubah semua string menjadi lower case
	fmt.Println("Method ToLower :", strings.ToLower("Rendy Wijaya"))

	// Merubah semua string menjadi uppper case
	fmt.Println("Method ToUpper :", strings.ToUpper("Rendy Wijaya"))

	// Menghapus semua spasi yang ada di kanan dan kiri, biasanya untuk validasi input user
	fmt.Println("Method Trim :", strings.Trim("          Rendy Wijaya          ", " "))

	// Mereplace semua kata rendy menjadi budi
	fmt.Println("Method ToUpper :", strings.ReplaceAll("rendy rendy rendy rendy", "rendy", "budy"))
}
Contoh baris kode penggunaan package strings
Contoh baris kode penggunaan package strings

Coba jalankan kode diatas dan kita akan mendapat output seberti berikut

Output beberapa function di package strings
Output beberapa function di package strings

Package strconv

Sebelumnya kita telah belajar cara konversi tipe data, misal dari int32 ke int64. Nah terkadang kita perlu melakukan konversi yang tipe datanya berbeda misal dari int ke string atau sebaliknya. Hal tersebut bisa kita lakukan dengan bantuan package strconv. Detailnya bisa dilihat pada https://pkg.go.dev/strconv

FunctionKegunaan
strconv.ParseBool(string)Mengubah string ke bool
strconv.ParseFloat(string)Mengubah string ke float
strconv.ParseInt(string)Mengubah string ke int
strconv.FormatBool(string)Mengubah bool ke string
strconv.FormatFloat(string, …)Mengubah bool ke float
strconv.FormatInt(string, …)Mengubah bool ke int
Beberapa function di package strconv

Contoh baris kode merubah int ke string dan sebaliknya menggunakan cara tercepat, untuk cara lainnya bisa merujuk ke dokumentasi resmi pada link diatas

package main

import (
	"fmt"
	"strconv"
)

func main() {
	// merubah string ke int
	strToInt, _ := strconv.Atoi("1000000")
	fmt.Println(strToInt)

	// merubah int ke string
	intToStr := strconv.Itoa(2000000)
	fmt.Println(intToStr)
}
Contoh penggunaan package strconv
Contoh penggunaan package strconv

Package math

Package math merupakan package yang berisikan constant dan function untuk matematika. Untuk dokumentasi lengkap nya bisa dilihat di https://pkg.go.dev/math

Pada artikel ini kita akan mencoba beberapa function yang sering digunakan pada package math.

FunctionKegunaan
math.Round(float64)Membulatkan float64 ke atas atau ke bawah, sesuai dengan yang paling dekat
math.Floor(float64)Membulatkan float64 kebawah
math.Ceil(float64)Membulatkan float64 keatas
math.Max(float64, float64)Mengembalikan nilai float64 paling besar
math.Min(float64, float64)Mengembalikan nilai float64 paling kecil
Bebrapa function di package math
package main

import (
	"fmt"
	"math"
)

func main() {
	// pembulatan round(paling dekat ke bawah atau ke atas tergantung value)
	fmt.Println(math.Round(1.60))

	// pembulatan ke atas
	fmt.Println(math.Ceil(1.40))

	// pembulatan ke bawah
	fmt.Println(math.Floor(1.60))

	// membandingkan dan mengembalikan nilai tertinggi
	fmt.Println(math.Max(1, 2))

	// membandingkan dan mengembalikan nilai terendah
	fmt.Println(math.Min(1, 2))
}
Penggunaan beberapa function pada package math
Penggunaan beberapa function pada package math

Package sort

Package sort adalah package yang berisikan utilitas atau helper untuk proses perngurutan data, agar data kita bisa di urutkan kita harus mengimplementasikan kontrak di interface sort.Interface Untuk dokumentasi lengkap nya dapat di review di https://pkg.go.dev/sort

Untuk menggunakan sort, kita harus mengikuti kontrak pada sort.Interface yang isi nya terdapat function Len, Less, Swap. Berikut contohnya

package main

import (
	"fmt"
	"sort"
)

type User struct {
	Name string
	Age  int
}

type UserSlice []User

func (value UserSlice) Len() int {
	return len(value)
}

func (value UserSlice) Less(i int, j int) bool {
	return value[i].Age < value[j].Age
}

func (value UserSlice) Swap(i int, j int) {
	value[i], value[j] = value[j], value[i]
}

func main() {
	users := []User{
		{"Rendy", 22},
		{"joko", 30},
		{"Budi", 31},
		{"Rudi", 25},
	}
	// sebelum di sort
	fmt.Println(users)

	sort.Sort(UserSlice(users))

	// setelah di sort
	fmt.Println(users)
}
Melakukan pengurutan dengan package sort
Melakukan pengurutan dengan package sort

Pada contoh kode diatas kita mengrutkan data slice users dari umur. Karena untuk menggunakan sort kita harus mengikuti kontrak yang sudah ada, maka kita hanya perlu membuat function yang sama dengan kontrak kemudian slice sudah bisa di urutkan secara otomatis.

Package time

Package time adalah package yang berisikan fungsionalitas untuk managemen waktu di golang. Untuk dokumentasi lebih lengkap bisa di lihat pada https://pkg.go.dev/time

FunctionKegunaan
time.Now()Untuk mendapatkan waktu saat ini
time.Date(…)Untuk membuat waktu
Beberapa function di package time
package main

import (
	"fmt"
	"time"
)

func main() {
	// mendapatkan waktu saat ini
	now := time.Now()
	fmt.Println(now)
	fmt.Println(now.Year())
	fmt.Println(now.Month())
	fmt.Println(now.Day())
	fmt.Println(now.Hour())
	fmt.Println(now.Minute())
	fmt.Println(now.Second())
	fmt.Println(now.Nanosecond())

	// membuat waktu secara manual
	utc := time.Date(2022, 10, 10, 10, 10, 10, 10, time.UTC)
	fmt.Println(utc)

	// mendapatkan timestamp
	fmt.Println(now.Unix())
}
Beberapa function pada package time
Beberapa function pada package time

Pada kode diatas kita mencoba mendappatkan waktu saat ini, membuat waktu dan menampilkan beberapa output di terminal. Pada artikel ini saya tidak akan menjelaskan semua nya dengan detail karena semua sudah di jelaskan di dokumentasi resmi golang, untuk lebih jelas silakan me review dokumentasinya dari link diatas.

Package reflect

Dalam bahasa pemrogaman, biasanya ada fitur refelction, dimana kita bisa melihat struktur kode kita pada saat aplikasi sedang berjalan. Untuk detail package ini dapat di review pada dokumentasi resminya https://pkg.go.dev/reflect

Pada artikel ini kita akan mencoba mengambil tipe data dari sebuah variable dan mengambil nilai nya.

package main

import (
	"fmt"
	"reflect"
)

func main() {
	name := "Rendy wijaya"
	reflectValue := reflect.ValueOf(name)

	// mengambil tipe variable dari value name
	fmt.Println("Tipe variable name :", reflectValue.Type())
	fmt.Println("Tipe variable name :", reflect.TypeOf(name))

	// mengambil nilai dalam bentuk interface kosong
	fmt.Println("Nilai variable name :", reflectValue.Interface())
}
Beberapa function pada package reflect
Beberapa function pada package reflect

Coba jalankan kode program diatas dan kita akan mendapat output seperti berikut

Output beberapa function pada package reflect
Output beberapa function pada package reflect

Penutup

Pada artikel kali ini kita telah belajar tentang beberapa package bawaan yang tersedia pada bahasa pemrogaman golang. Dan pada artikel selanjutnya saya akan membahas Go Modules pada golang.

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

About Me

About Me

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam.

Social Profiles

Facebook