Tipe Data

Integer

int8 16 32 64
uint8
float32 64
complex64 128

Alias

byte : untuk uint8
rune : int32
int : int32
uint : uint32

Boolean

true false

String

len(“string”)

Arary & Map

[]int {} map[string]int

Condition

var name = "A"
if name == "A" {
	fmt.Println("Hello A")
} else if {
} else {
}

Loop

for conter := 1; counter <= 10; counter ++ {
	// statement
}
 
slice := []string{"aaaa"}
for index, name := range slice {
	// statement
}

Function

func halo(name string) string {
	return "halo " + name
}
// multiple return
func getFullName() (string, string) {
	return "halo", "hola"
}
firstNmae, _ := getFullName()
 
	/**
	Variadic Function
	
	*/
func halo(name ...int) string {
	var total int
	for _, v := range name {
		total += v
	}
}
slice := []int{1,2,3,4}
halo(slice...)
// param or return any datatype
interface{}

Defer, Panic, Recover

// manggil fungsi yang lain
defer function()
// mirip throw
panic 
// catch
recover

Struct

type Customer struct {
	Name, NPM string
	Address string
	Age int
}
joko := Customer {
	Name := sss///sd//asd//asd/sad/a/sd
}
 
func (customer Customer) sayHi(name string) {
	
}

Interface

type Animal interface {
	getID() string
}
nil
// Error
import "errors"
func Pembagi(nilai int, pembagi int) (int, error) {
	if pembagi == 0 {
		return 0, errors.New("gaboleh")
	} else {
		result := nilai / pembagi
		return result, nil
	}
}

Type Assertions

var angka int = 1
var resultString string = angka.(int32)

Pointer

  • Golang defaultnya pass by value
  • Pointer bisa buat data jadi pass by reference di golang
address1 := Address("Cimahi", "Jawabarat")
address2 := address1 // pass by value
address2 := &address1 // pass by reference
*address2 := address_baru // jadi berubah semua di memorynya

GOPATH

src/golang/

func init() {}

import package tapi ga dipake : _

Access Modifier

namaFunction() // mirip protect
NamaFunction() // mirip public

Package

os

import "os"
os.Args
os.Getenv

flag

import "flag"
var host *string := flag.String("host", "localhost", "Put your database here")
flag.Parse()
// go run file.go -host="localhost2"

strings and strconv

import "strings"
strings.Trim(string, cutset)
strings.ToLower(string)
strings.ToUpper(string)
strings.Split(string, separator)
strings.Contains(string, search)
strings.ReplaceAll(string, from, to)
 
import "strconv"
parseBool
parseFloat
parseInt
// to string
FormatBool
FormatFloat
FormatInt
Atoi
Itoa

Math

import "math"
Round
Floor
Ceil
Max
Min

List

import "container/list"
// linked list
list.New()

Container/ring

import "container/ring"
//circular linked list
ring.New(5)

Sort

 
Len
Less
Swap

Time

impoer "time"
time.Now()
time.Date()
time.Parse(layout, string)
"reflect"
"regexp"

Other Sources

CRUD

Generate CRUD Golang code from SQL | Compare db/sql, gorm, sqlx, sqlc