golang_2

39
II (Standard Library, Variabel, Konstanta Tipe Data, Operator)

Upload: dimas-prawira

Post on 13-Apr-2017

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GoLang_2

II(Standard Library, Variabel, Konstanta Tipe Data, Operator)

Page 2: GoLang_2

Roadmap pembelajaran Go

- Setup GoSDK- Struktur kode Go

- Kompilasi kode Go

III

- Standar Lib Go- Variabel

- Konstanta- Tipe Data- Operator

III

IV...

API

Page 3: GoLang_2

Apa yang kita pelajari?1. Standar Library GO2. Package3. Import4. Variabel5. Tipe Data6. Konstanta7. Operator dan Delimiter

Page 4: GoLang_2

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

Page 5: GoLang_2

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)

Page 6: GoLang_2

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.

Page 7: GoLang_2

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

Page 8: GoLang_2

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

Page 9: GoLang_2

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

Page 10: GoLang_2

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.

Page 11: GoLang_2

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".

Page 12: GoLang_2

package main

import "fmt"

func main(){ fmt.Println("Hello Go!")}

Page 13: GoLang_2

Import• Digunakan untuk memuat berbagai macam library, baik dari luar maupun yang telah disediakan

oleh bahasa pemrograman Go.

Page 14: GoLang_2

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!")}

Page 15: GoLang_2

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>

Page 16: GoLang_2

• 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)

Page 17: GoLang_2

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)}

Page 18: GoLang_2

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.

Page 19: GoLang_2

• 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)}

Page 20: GoLang_2

Tipe Data• Golang mengenal beberapa jenis tipe data, diantaranya adalah

tipe data numerik (desimal & non-desimal), string, dan boolean.

Page 21: GoLang_2

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)

Page 22: GoLang_2

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

Page 23: GoLang_2

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)}

Page 24: GoLang_2

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.

Page 25: GoLang_2

package main

import "fmt"

func main(){ var decimalA = 2.26 fmt.Printf("nilai decimalA = %f\n", a) fmt.Printf("nilai decimalA = %3f\n", a)}

Page 26: GoLang_2

Tipe Data Boolean• Tipe data bool berisikan hanya 2 variasi nilai, true dan false.Tipe

data ini biasa dimanfaatkan dalam seleksi kondisi dan perulangan

Page 27: GoLang_2

package main

import "fmt"

func main(){ var betul bool = true fmt.Printf("betul = %t\n", betul)}

Page 28: GoLang_2

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)

Page 29: GoLang_2

package main

import "fmt"

func main(){ var pesan = `Nama saya "Dodo". Salam kenal. Mari belajar "Golang".`

fmt.Println(pesan)}

Page 30: GoLang_2

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{}

Page 31: GoLang_2

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.

Page 32: GoLang_2

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)}

Page 33: GoLang_2

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.

+ & += &= && == != ( ) -

| -= |= || < <= [ ] * ^

*= ^= <- > >= { } / << /=

<<= ++ = := , ; % >> %= >>=

-- ! ... . : &^ &^=

Page 34: GoLang_2

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)

Page 35: GoLang_2

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 )}

Page 36: GoLang_2

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)

Page 37: GoLang_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)}

Page 38: GoLang_2

Operator Logika• Operator ini digunakan untuk mencari benar tidaknya kombinasi data bertipe bool

Tanda Penjelasan

&& And

|| OR

! Negasi / nilai kebalikan

Page 39: GoLang_2

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)}