golang_2
TRANSCRIPT
II(Standard Library, Variabel, Konstanta Tipe Data, Operator)
Roadmap pembelajaran Go
- Setup GoSDK- Struktur kode Go
- Kompilasi kode Go
III
- Standar Lib Go- Variabel
- Konstanta- Tipe Data- Operator
III
IV...
API
Apa yang kita pelajari?1. Standar Library GO2. Package3. Import4. Variabel5. Tipe Data6. Konstanta7. Operator dan Delimiter
Tujuan pembelajaranPoin - poin yang kita harap dapatkan pada sesi ini :
Pengetahuan
• Mengetahui pustaka standar pada Go
• Mengetahui keyword (var, const, package, import) pada Go
• Mengetahui tipe data pada Go
• Mengetahui operator pada Go
Skills
• Dapat menggunakan keyword Go pada aplikasi
• Dapat menggunakan tipe data
• Dapat menggunakan operator
Pustaka (Library)• Library adalah kumpulan dari fungsi, class-class, object, konstanta, dan template yang digunakan
untuk melakukan operasi-operasi dasar dan beberapa fungsi lainnya.• koleksi dari rutin-rutin program yang digunakan untuk membangun dan mengembangkan
perangkat lunak (https://id.wikipedia.org/wiki/Pustaka_perangkat_lunak)
Pustaka Standar (Standard Library) Go• Pustaka (library) standar Go dilengkapi dengan banyak paket yang berguna yang
dapat digunakan untuk membangun aplikasi. Contohnya pustaka (library) standar "net / http", paket yang terdapat dalam pustaka ini dapat digunakan untuk membangun aplikasi atau layanan berbasis web. Paket dari pustaka standar tersedia pada folder "pkg" yaitu subdirektori dari direktori GOROOT.
Library Package Deskripsi
fmt Paket fmt digunakan untuk fungsi I/O, penamaan fungsi-fungsinya menyerupai dengan fungsi pada C (contoh : printf and scanf)
encoding ascii85, asn1, base32, base64, csv, hex, json, xml...
Paket encoding digunakan untuk melakukan mengkonversi data ke dan dari satu format ke format yang lain baik pada tingkatan byte ataupun tekstual.
net http (cgi, cookiejar, fcgi, httptest, httptrace ...),mail, rpc (jsonrpc), smtp, url, ...
Paket net menyediakan antarmuka untuk fungsi-fungsi seperti network I/O, termasuk TCP/IP, UDP, domain name resolution (dns) dan Unix domain sockets.
regexp syntax Paket regexp menyediakan fungsi pencarian teks menggunakan regular expression
strconv Paket strconv menyediakan fungsi-fungsi konversi tipe data.
time Paket time menyediakan fungsi - fungsi mengukur dan menampilkan waktu.
math big, cmplx, rand Paket math menyediakan fungsi-fungsi matematika.
image color(palette), draw, gif, jpeg, png
Paket image menyediakan fungsi-fungsi dasar pemrosesan image 2 dimensi (2D)
errors Paket errors menyediakan fungsi-fungsi untuk pemrosesan error
database driver Paket sql menyediakan fungsi-fungsi umum SQL database.
crypto aes, cipher, des, dsa, md5, hmac, rsa, ...
Paket crypto menyediakan fungsi-fungsi kriptografi
Library Package Deskripsiarchive tar, zip Paket archive menyediakan fungsi-fungsi pengaksesan file arsip (zip atau tar)
html template Paket html menyediakan fungsi-fungsi untuk pemrosesan HTML text.
log syslog Paket log menyediakan fungsi-fungsi sederhana penulisan log
sumber : https://golang.org/pkg/#stdlib
Kata kunci (Keywords)• Pada bahasa pemrograman Go terdapat 25 kata kunci (keywords)
yang dapat dituliskan sebagai berikut:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
Paket (Package)• File sumber (source file) Go disusun didalam direktori sistem yang disebut paket,
kode-kode tersebut dimungkinkan untuk dapat digunakan diseluruh aplikasi Go.• Konvensi penamaan pada paket Go menggunakan nama direktori sistem di mana
kita meletakkan file sumber, sehingga nama paket akan sama untuk semua file sumber yang termasuk ke direktori tersebut.
Paket utama (Package main)• Paket utama (Package main) digunakan pada aplikasi standalone atau aplikasi yang hasil akhirnya
dapat dieksekusi atau dijalankan. Fungsi utama dalam paket/package "main" akan menjadi titik masuk program.
• Pustaka bersama (shared library) adalah kode yang ditujukan untuk dapat digunakan kembali. • Kode yang ditujukan untuk membuat pustaka bersama (shared library) tidak akan mempunyai
"package main" dan "func main".
package main
import "fmt"
func main(){ fmt.Println("Hello Go!")}
Import• Digunakan untuk memuat berbagai macam library, baik dari luar maupun yang telah disediakan
oleh bahasa pemrograman Go.
package main
// style-1 //import "fmt"
func main(){ fmt.Println("Hello Go!")}
package main
// style-2 //import ( f "fmt" "lib/math")
func main(){ f.Println("Hello Go!")}
Var (Variabel)• Statement var digunakan untuk mendeklarasikan variabel beserta tipe datanya. Skema penggunaan keyword var :
// style - 1 //var ( name string // deklarasi variabel name dengan tipe data string umur int // deklarasi variabel umur dengan tipe data int (integer) lokasi string // deklarasi variabel lokasi dengan tipe data string)// style - 2 //var ( name, lokasi string // grup deklarasi variabel bertipe data sama umur int)// style - 3 //var name stringvar umur intvar lokasi string
var <nama variabel> <tipe data>var <nama variabel> <tipe data> = <nilai>
• Deklarasi var juga bisa ditambahkan inisialisasi nilai setiap variabel
• Jika diinisilisasi, maka tipe data bisa tidak digunakan sehingga tipe variabel akan mengikuti nilai yang diberikan kepada variabel tersebut (inferred typing).
var ( nama string = "Dodo" umur int = 32 lokasi string = "Jakarta")
// style - 1 //var ( nama = "Dodo" umur = 32 lokasi = "Jakarta")// style - 2 //var ( nama, lokasi, umur = "Dodo", "Jakarta", 32)
Deklarasi variabel tanpa var (implisit)
Deklarasi variabel dengan var (eksplisit)
package main
import "fmt"
func main(){ nama, umur, lokasi := "Agung", 25, "jakarta" // deklarasi variabel tanpa var (secara implisit) fmt.Println("Nama : ", nama) fmt.Println("Umur : ", umur) fmt.Println("Lokasi : ", lokasi)}
package main
import "fmt"
func main(){ var ( nama, umur, lokasi = "Agung", 25, "jakarta" ) // deklarasi variabel dengan var (secara eksplisit) fmt.Println("Nama : ", nama) fmt.Println("Umur : ", umur) fmt.Println("Lokasi : ", lokasi)}
Variabel underscore "_"• Go memiliki aturan unik yang tidak dimiliki bahasa pemrograman lain
yaitu tidak boleh ada satu variabel pun yang "menganggur". Artinya setiap variabel yang dideklarasikan harus digunakan, jika ada variabel yang tidak digunakan maka aplikasi akan gagal dikompilasi.• Underscore ( _ ) adalah predefined variabel yang bisa dimanfaatkan
untuk menampung nilai yang tidak dipakai.
• Variabel underscore pada tipe deklarasi implisit
• Variabel underscore pada tipe deklarasi eksplisit
package main
import "fmt"
func main(){ nama, umur, _ := "Agung", 25, "jakarta" // deklarasi variabel tanpa var (secara implisit) fmt.Println("Nama : ", nama) fmt.Println("Umur : ", umur)}
package main
import "fmt"
func main(){ var ( nama, umur, _ = "Agung", 25, "jakarta" ) // deklarasi variabel dengan var (secara eksplisit) fmt.Println("Nama : ", nama) fmt.Println("Umur : ", umur)}
Tipe Data• Golang mengenal beberapa jenis tipe data, diantaranya adalah
tipe data numerik (desimal & non-desimal), string, dan boolean.
Tipe Data Numerik Non-Desimal• Tipe data numerik non-desimal atau non floating point di Go
ada beberapa macam. Secara umum ada 2 tipe data yang perlu diketahui, yaitu:• uint, merupakan tipe data untuk bilangan cacah (bilangan positif)• int, merupakan tipe data untuk bilangan bulat (bilangan negatif dan positif)
Tipe Data Cakupan Bilangan
uint8 0 - 255
uint16 0 - 65535
uint32 0 - 4294967295
uint64 0 - 18446744073709551615
uint sama dengan uint32 atau uint64 (tergantung nilai)
byte sama dengan uint8
int8 -128 - 127
int16 -32768 - 32767
int32 -2147483648 - 2147483647
int64 -9223372036854775808 - 9223372036854775807
int sama dengan int32 atau int64 (tergantung nilai)
rune sama dengan int32
package main
import "fmt"
func main(){ var a int8 = 10 var negatifA int8 = -50 var b uint16 = 54300 var c uint = 33
fmt.Printf("nilai a = %d\n", a) fmt.Printf("nilai negatifA = %d\n", negatifA) fmt.Printf("nilai b = %d\n", b) fmt.Printf("nilai c = %d\n", c)}
Tipe Data Numerik Desimal• Tipe data numerik desimal yang perlu diketahui ada 2, float32
dan float64. Perbedaan kedua tipe data tersebut berada pada lebar cakupan nilai desimal yang bisa ditampung. Untuk lebih jelasnya bisa merujuk ke spesifikasi IEEE-754 32-bit floating-point numbers.
package main
import "fmt"
func main(){ var decimalA = 2.26 fmt.Printf("nilai decimalA = %f\n", a) fmt.Printf("nilai decimalA = %3f\n", a)}
Tipe Data Boolean• Tipe data bool berisikan hanya 2 variasi nilai, true dan false.Tipe
data ini biasa dimanfaatkan dalam seleksi kondisi dan perulangan
package main
import "fmt"
func main(){ var betul bool = true fmt.Printf("betul = %t\n", betul)}
Tipe Data String• Ciri khas dari tipe data string adalah nilainya diapit oleh tanda quote
atau petik dua (").
• Selain menggunakan tanda quote, deklarasi string juga bisa dengan tanda grave accent/backticks (`). Keistimewaan string yang dideklarasikan menggunakan backtics adalah membuat semua karakter
didalamnya tidak akan di escape, semua akan terdeteksi sebagai string.
var pesan string = "Hallo Dunia..!!"fmt.Printf("%s /n", pesan)
package main
import "fmt"
func main(){ var pesan = `Nama saya "Dodo". Salam kenal. Mari belajar "Golang".`
fmt.Println(pesan)}
Nilai nil Dan Nilai Default Tipe Data• Semua tipe data yang sudah dibahas sebelumnya memiliki nilai default. Artinya meskipun variabel
dideklarasikan tanpa nilai awal, akan ada nilai default-nya.• Nilai default string adalah "" (string kosong)• Nilai default bool adalah false• Nilai default tipe numerik non-desimal adalah 0• Nilai default tipe numerik desimal adalah 0.0
• nil bukan merupakan tipe data, melainkan sebuah nilai. Variabel yang isi nilainya nil, berarti variabel tersebut memiliki nilai kosong. Beberapa tipe data yang bisa di-set nilainya dengan nil, diantaranya:• pointer• tipe data fungsi• slice• map• channel• interface kosong atau interface{}
Const (Konstanta)• Const digunakan untuk mendeklarasikan sebuah konstanta.• Konstanta adalah variabel yang nilainya tidak bisa diubah. Inisialisasi
nilai hanya dilakukan sekali di awal.• Konstanta hanya dapat berupa karakter (character), string, boolean,
atau numerik (numeric) dan tidak bisa dideklarasikan menggunakan operator ":=".• Konstanta yang tidak didefinisikan tipe datanya akan secara otomatis
menggunakan tipe data yang sesuai dengan nilai yang diberikan.
package main
import "fmt"
const Pi = 3.14const Pesan= "Hello World!"const emptyString = ""const ( StatusOK = 200 StatusCreated = 201)
func main() { fmt.Println(StatusOK) fmt.Println(StatusCreated) fmt.Println(Pesan) fmt.Println(emptyString) fmt.Println(Pi)}
Operator dan delimiter• Go juga mempunyai operator dan delimiter yang tidak jauh berbeda dari beberapa bahasa
pemrograman pada umumnya• Secara umum operator dibagi menjadi 3 kategori: operator aritmatika, perbandingan, dan logika.
+ & += &= && == != ( ) -
| -= |= || < <= [ ] * ^
*= ^= <- > >= { } / << /=
<<= ++ = := , ; % >> %= >>=
-- ! ... . : &^ &^=
Operator Aritmatika• Operator aritmatika adalah operator yang digunakan untuk operasi yang sifatnya perhitungan
Tanda Penjelasan
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
% Modulus
++ Penambahan 1 pada variabel (int)
-- Pengurangan 1 pada variabel (int)
package main
import "fmt"
func main() {
var a int = 21 var b int = 10 var c int
c = a + b fmt.Println("Nilai C = ", c ) c = a - b fmt.Println("Nilai C = ", c ) c = a * b fmt.Println("Nilai C = ", c ) c = a / b fmt.Println("Nilai C = ", c ) c = a % b fmt.Println("Nilai C = ", c ) a++ fmt.Println("Nilai A = ", a ) a-- fmt.Println("Nilai A = ", a )}
Operator Perbandingan• Operator perbandingan digunakan untuk menentukan kebenaran suatu kondisi. Hasilnya berupa
nilai boolean, true atau false.
Tanda Penjelasan
== apakah nilai kiri sama dengan nilai kanan
!= apakah nilai kiri tidak sama dengan nilai kanan
< apakah nilai kiri lebih kecil dari nilai kanan
<= apakah nilai kiri lebih kecil atau sama dengan nilai kanan
> apakah nilai kiri lebih besar dari nilai kanan
>= apakah nilai kiri lebih besar atau sama dengan nilai kanan
Contoh : var hasil = ((2 + 6) % 3) * 4 - 2) / 3var isEqual = (value == 2)
package main
import "fmt"
func main() {
var a int = 21 var b int = 10 var c = a + b var isEqual = (c == 31)
fmt.Println(" Apakah nilai C sama dengan 31 : ", isEqual)}
Operator Logika• Operator ini digunakan untuk mencari benar tidaknya kombinasi data bertipe bool
Tanda Penjelasan
&& And
|| OR
! Negasi / nilai kebalikan
package main
import "fmt"
func main() {
var a bool = true var b bool = false var and = (a && b) var or = (a || b)
fmt.Println(" A and B : ", and) fmt.Println(" A OR B : ", or)}