2. Roadmap pembelajaran Go
- Setup GoSDK
- Struktur kode Go
- Kompilasi kode
Go
I
II
- Standar Lib Go
- Variabel
- Konstanta
- Tipe Data
- Operator
III
IV
...
API
3. Apa yang kita pelajari?
1. Standar Library GO
2. Package
3. Import
4. Variabel
5. Tipe Data
6. Konstanta
7. Operator dan Delimiter
4. Tujuan pembelajaran
Poin - 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
5. 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)
6. 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.
7. 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
8. Library Package Deskripsi
archive 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
9. 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
10. 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.
11. 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".
13. Import
• Digunakan untuk memuat berbagai macam library, baik dari luar maupun yang telah disediakan
oleh bahasa pemrograman Go.
14. 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!")
}
15. 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 string
var umur int
var lokasi string
var <nama variabel> <tipe data>
var <nama variabel> <tipe data> = <nilai>
16. • 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
)
17. 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)
}
18. 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.
19. • 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)
}
20. Tipe Data
• Golang mengenal beberapa jenis tipe data, diantaranya adalah tipe
data numerik (desimal & non-desimal), string, dan boolean.
21. 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)
22. 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
23. 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 = %dn", a)
fmt.Printf("nilai negatifA = %dn", negatifA)
fmt.Printf("nilai b = %dn", b)
fmt.Printf("nilai c = %dn", c)
}
24. 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.
25. package main
import "fmt"
func main(){
var decimalA = 2.26
fmt.Printf("nilai decimalA = %fn", a)
fmt.Printf("nilai decimalA = %3fn", a)
}
26. Tipe Data Boolean
• Tipe data bool berisikan hanya 2 variasi nilai, true dan false.Tipe
data ini biasa dimanfaatkan dalam seleksi kondisi dan perulangan
28. 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)
29. package main
import "fmt"
func main(){
var pesan = `Nama saya "Dodo".
Salam kenal.
Mari belajar "Golang".`
fmt.Println(pesan)
}
30. 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{}
31. 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.
33. 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.
+ & += &= && == != ( ) -
| -= |= || < <= [ ] * ^
*= ^= <- > >= { } / << /=
<<= ++ = := , ; % >> %= >>=
-- ! ... . : &^ &^=
34. 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)
35. 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 )
}
36. 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) / 3
var isEqual = (value == 2)
37. 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)
}
38. Operator Logika
• Operator ini digunakan untuk mencari benar tidaknya kombinasi data bertipe bool
Tanda Penjelasan
&& And
|| OR
! Negasi / nilai kebalikan
39. 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)
}