├── helloworld.go
├── other
└── other.go
├── boolean.go
├── comment.go
├── number.go
├── .idea
├── misc.xml
├── .gitignore
├── modules.xml
└── belajar-golang-dasar.iml
├── break.go
├── continue.go
├── package-initialization.go
├── database
└── database.go
├── function.go
├── helper
└── sayhello.go
├── import.go
├── constant.go
├── type-declarations.go
├── pointer-method.go
├── string.go
├── function-parameter.go
├── interface-kosong.go
├── math.go
├── function-as-value.go
├── function-return-multiple-value.go
├── function-return-value.go
├── closure.go
├── defer.go
├── function-return-named-value.go
├── ring.go
├── function-variadic.go
├── regexp.go
├── boolean-operator.go
├── comparation-operator.go
├── conversion.go
├── nil.go
├── panic.go
├── math-operation.go
├── interface-error.go
├── os.go
├── type-assertions.go
├── if.go
├── function-as-parameter.go
├── variable.go
├── time.go
├── strconv.go
├── container-list.go
├── array.go
├── flag.go
├── function-recursive.go
├── map.go
├── strings.go
├── for.go
├── interface.go
├── sort.go
├── switch.go
├── struct.go
├── function-anonymous.go
├── pointer.go
├── reflect.go
└── slice.go
/helloworld.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main(){
6 | fmt.Println("Hello World")
7 | }
--------------------------------------------------------------------------------
/other/other.go:
--------------------------------------------------------------------------------
1 | package other
2 |
3 | import "fmt"
4 |
5 | func SayHello(name string){
6 | fmt.Println("Hello", name)
7 | }
8 |
--------------------------------------------------------------------------------
/boolean.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | fmt.Println("Benar = ", true)
7 | fmt.Println("Salah = ", false)
8 | }
9 |
--------------------------------------------------------------------------------
/comment.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | /**
4 | komentar
5 | multi line
6 | tidak terbatas
7 | */
8 | func main() {
9 | // Ini komentar single line
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/number.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | fmt.Println("Satu = ", 1)
7 | fmt.Println("Dua = ", 2)
8 | fmt.Println("Tiga Koma Lima = ", 3.5)
9 | }
10 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/break.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | for i := 0; i < 10; i++ {
7 | if i == 5 {
8 | break
9 | }
10 | fmt.Println("Perulangan ke ", i)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/continue.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | for i := 0; i < 10; i++ {
7 | if i % 2 == 0 {
8 | continue
9 | }
10 | fmt.Println("Perulangan ke", i)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/package-initialization.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "belajar-golang-dasar/database"
5 | "fmt"
6 | )
7 |
8 | func main() {
9 | result := database.GetDatabase()
10 | fmt.Println(result)
11 | }
12 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/database/database.go:
--------------------------------------------------------------------------------
1 | package database
2 |
3 | import "fmt"
4 |
5 | var connection string
6 |
7 | func init(){
8 | fmt.Println("Init dipanggil")
9 | connection = "MySQL"
10 | }
11 |
12 | func GetDatabase() string {
13 | return connection
14 | }
15 |
--------------------------------------------------------------------------------
/function.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func sayHello() {
6 | fmt.Println("Hello World")
7 | fmt.Println("Hello World")
8 | fmt.Println("Hello World")
9 | }
10 |
11 | func main() {
12 | for i := 0; i < 10; i++ {
13 | sayHello()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/helper/sayhello.go:
--------------------------------------------------------------------------------
1 | package helper
2 |
3 | import "fmt"
4 |
5 | var version = 1
6 | var Application = "Belajar Golang"
7 |
8 | func SayHello(name string){
9 | fmt.Println("Hello", name)
10 | }
11 |
12 | func sayGoodbye(name string){
13 | fmt.Println("Goodbye", name)
14 | }
--------------------------------------------------------------------------------
/import.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "belajar-golang-dasar/helper"
5 | "fmt"
6 | )
7 |
8 | func main() {
9 | helper.SayHello("Eko")
10 | // helper.sayGoodbye("Eko") // error
11 | fmt.Println(helper.Application)
12 | // fmt.Println(helper.version) // error
13 | }
14 |
--------------------------------------------------------------------------------
/constant.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | const (
7 | firstName string = "Eko"
8 | lastName = "Khannedy"
9 | value = 1000
10 | )
11 |
12 | fmt.Println(firstName)
13 | fmt.Println(lastName)
14 | fmt.Println(value)
15 | }
16 |
--------------------------------------------------------------------------------
/type-declarations.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | type NoKTP string
7 | type Married bool
8 |
9 | var noKtpEko NoKTP = "18741982741897419874"
10 | var marriedStatus Married = true
11 | fmt.Println(noKtpEko)
12 | fmt.Println(marriedStatus)
13 | }
14 |
--------------------------------------------------------------------------------
/pointer-method.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | type Man struct {
6 | Name string
7 | }
8 |
9 | func (man *Man) Married() {
10 | man.Name = "Mr. " + man.Name
11 | }
12 |
13 | func main() {
14 | eko := Man{"Eko"}
15 | eko.Married()
16 |
17 | fmt.Println(eko.Name)
18 | }
19 |
--------------------------------------------------------------------------------
/string.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | fmt.Println("Eko")
7 | fmt.Println("Eko Kurniawan")
8 | fmt.Println("Eko Kurniawan Khannedy")
9 |
10 | fmt.Println(len("Eko"))
11 | fmt.Println("Eko Kurniawan"[0])
12 | fmt.Println("Eko Kurniawan Khannedy"[1])
13 | }
14 |
--------------------------------------------------------------------------------
/function-parameter.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func sayHelloTo(firstName string, lastName string) {
6 | fmt.Println("Hello", firstName, lastName)
7 | }
8 |
9 | func main() {
10 | firstName := "Eko"
11 | sayHelloTo(firstName, "Kurniawan")
12 | sayHelloTo("Budi", "Nugraha")
13 | }
14 |
--------------------------------------------------------------------------------
/interface-kosong.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func Ups(i int) interface{} {
6 | if i == 1 {
7 | return 1
8 | } else if i == 2 {
9 | return true
10 | } else {
11 | return "Ups"
12 | }
13 | }
14 |
15 | func main() {
16 | var data interface{} = Ups(3)
17 | fmt.Println(data)
18 | }
19 |
--------------------------------------------------------------------------------
/math.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "math"
6 | )
7 |
8 | func main() {
9 | fmt.Println(math.Round(1.7))
10 | fmt.Println(math.Round(1.3))
11 | fmt.Println(math.Floor(1.7))
12 | fmt.Println(math.Ceil(1.3))
13 |
14 | fmt.Println(math.Max(10, 20))
15 | fmt.Println(math.Min(10, 20))
16 | }
17 |
--------------------------------------------------------------------------------
/function-as-value.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func getGoodBye(name string) string {
6 | return "Good Bye " + name
7 | }
8 |
9 | func main() {
10 |
11 | sayGoodBye := getGoodBye
12 |
13 | result := sayGoodBye("Eko")
14 | fmt.Println(result)
15 | fmt.Println(getGoodBye("Eko"))
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/belajar-golang-dasar.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/function-return-multiple-value.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func getFullName() (string, string, string) {
6 | return "Eko", "Kurniawan", "Khannedy"
7 | }
8 |
9 | func main() {
10 | firstName, _, _ := getFullName()
11 | fmt.Println(firstName)
12 | // fmt.Println(middleName)
13 | // fmt.Println(lastName)
14 | }
15 |
--------------------------------------------------------------------------------
/function-return-value.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func getHello(name string) string {
6 | if name == "" {
7 | return "Hello Bro"
8 | } else {
9 | return "Hello " + name
10 | }
11 | }
12 |
13 | func main() {
14 | result := getHello("Eko")
15 | fmt.Println(result)
16 |
17 | fmt.Println(getHello(""))
18 | }
19 |
--------------------------------------------------------------------------------
/closure.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | name := "Eko"
7 | counter := 0
8 |
9 | increment := func() {
10 | name := "Budi"
11 | fmt.Println("Increment")
12 | counter++
13 | fmt.Println(name)
14 | }
15 |
16 | increment()
17 | increment()
18 |
19 | fmt.Println(counter)
20 | fmt.Println(name)
21 | }
22 |
--------------------------------------------------------------------------------
/defer.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func logging(){
6 | fmt.Println("Selesai memanggil function")
7 | }
8 |
9 | func runApplication(value int){
10 | defer logging()
11 | fmt.Println("Run application")
12 | result := 10 / value
13 | fmt.Println("Result", result)
14 | }
15 |
16 | func main() {
17 | runApplication(10)
18 | }
19 |
--------------------------------------------------------------------------------
/function-return-named-value.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func getFullName2() (firstName string, middleName string, lastName string) {
6 | firstName = "Eko"
7 | middleName = "Kurniawan"
8 | lastName = "Khannedy"
9 |
10 | return
11 | }
12 |
13 | func main() {
14 | a, b, c := getFullName2()
15 | fmt.Println(a)
16 | fmt.Println(b)
17 | fmt.Println(c)
18 | }
19 |
--------------------------------------------------------------------------------
/ring.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "container/ring"
5 | "fmt"
6 | "strconv"
7 | )
8 |
9 | func main() {
10 | var data *ring.Ring = ring.New(5)
11 |
12 | for i := 0; i < data.Len() ; i ++ {
13 | data.Value = "Data " + strconv.FormatInt(int64(i), 10)
14 | data = data.Next()
15 | }
16 |
17 | data.Do(func(value interface{}) {
18 | fmt.Println(value)
19 | })
20 | }
21 |
--------------------------------------------------------------------------------
/function-variadic.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func sumAll(numbers ...int) int {
6 | total := 0
7 | for _, value := range numbers {
8 | total += value
9 | }
10 | return total
11 | }
12 |
13 | func main() {
14 | total := sumAll(10, 90, 30, 50, 40)
15 | fmt.Println(total)
16 |
17 | slice := []int{10,20,30,40,50}
18 | total = sumAll(slice...)
19 | fmt.Println(total)
20 | }
21 |
--------------------------------------------------------------------------------
/regexp.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "regexp"
6 | )
7 |
8 | func main() {
9 | var regex *regexp.Regexp = regexp.MustCompile("e([a-z])o")
10 |
11 | fmt.Println(regex.MatchString("eko"))
12 | fmt.Println(regex.MatchString("eto"))
13 | fmt.Println(regex.MatchString("eDo"))
14 |
15 | search := regex.FindAllString("eko eka edo eto eyo eki", -1)
16 | fmt.Println(search)
17 | }
18 |
--------------------------------------------------------------------------------
/boolean-operator.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 |
7 | var ujian = 80
8 | var absensi = 75
9 |
10 | var lulusUjian = ujian >= 80
11 | var lulusAbsensi = absensi >= 80
12 | fmt.Println(lulusUjian)
13 | fmt.Println(lulusAbsensi)
14 |
15 | var lulus = lulusAbsensi && lulusUjian
16 | fmt.Println(lulus)
17 |
18 | fmt.Println(ujian >= 80 && absensi >= 80)
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/comparation-operator.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 |
7 | var name1 = "Eko"
8 | var name2 = "Budi"
9 |
10 | var result bool = name1 == name2
11 | fmt.Println(result)
12 |
13 | var value1 = 100
14 | var value2 = 200
15 |
16 | fmt.Println(value1 > value2)
17 | fmt.Println(value1 < value2)
18 | fmt.Println(value1 == value2)
19 | fmt.Println(value1 != value2)
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/conversion.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | var nilai32 int32 = 129
7 | var nilai64 int64 = int64(nilai32)
8 | var nilai8 int8 = int8(nilai32)
9 |
10 | fmt.Println(nilai32)
11 | fmt.Println(nilai64)
12 | fmt.Println(nilai8)
13 |
14 | var name = "Eko"
15 | var e byte = name[0]
16 | var eString string = string(e)
17 |
18 | fmt.Println(name)
19 | fmt.Println(eString)
20 | }
21 |
--------------------------------------------------------------------------------
/nil.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func NewMap(name string) map[string]string {
6 | if name == "" {
7 | return nil
8 | } else {
9 | return map[string]string{
10 | "name": name,
11 | }
12 | }
13 | }
14 |
15 | func main() {
16 | var person map[string]string = NewMap("Eko")
17 |
18 | if person == nil {
19 | fmt.Println("Data Kosong")
20 | }else {
21 | fmt.Println(person)
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/panic.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func endApp(){
6 | message := recover()
7 | if message != nil {
8 | fmt.Println("Error dengan message:", message)
9 | }
10 | fmt.Println("Aplikasi selesai")
11 | }
12 |
13 | func runApp(error bool){
14 | defer endApp()
15 | if error {
16 | panic("APLIKASI ERROR")
17 | }
18 | fmt.Println("Aplikasi berjalan")
19 | }
20 |
21 | func main() {
22 | runApp(true)
23 | fmt.Println("Eko")
24 | }
25 |
--------------------------------------------------------------------------------
/math-operation.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 |
7 | var result = 10 + 10
8 | fmt.Println(result)
9 |
10 | var a = 10
11 | var b = 10
12 | var c = a * b
13 | fmt.Println(c)
14 |
15 | var i = 10
16 | i += 10 // i = i + 10
17 | fmt.Println(i)
18 |
19 | i++ // i = i + 1
20 | fmt.Println(i)
21 |
22 | var negative = -100
23 | var positive = +100
24 | fmt.Println(negative)
25 | fmt.Println(positive)
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/interface-error.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "errors"
5 | "fmt"
6 | )
7 |
8 | func Pembagi(nilai int, pembagi int) (int, error) {
9 | if pembagi == 0 {
10 | return 0, errors.New("Pembagi tidak boleh 0")
11 | }else {
12 | result := nilai / pembagi
13 | return result, nil
14 | }
15 | }
16 |
17 | func main() {
18 | hasil, err := Pembagi(100, 0)
19 | if err == nil{
20 | fmt.Println("Hasil", hasil)
21 | }else {
22 | fmt.Println("Error", err.Error())
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/os.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "os"
6 | )
7 |
8 | func main() {
9 | args := os.Args
10 | fmt.Println("Argument : ")
11 | fmt.Println(args)
12 |
13 | name, err := os.Hostname()
14 | if err == nil {
15 | fmt.Println("Hostname : ", name)
16 | } else {
17 | fmt.Println("Error", err.Error())
18 | }
19 |
20 | username := os.Getenv("APP_USERNAME")
21 | password := os.Getenv("APP_PASSWORD")
22 |
23 | fmt.Println(username)
24 | fmt.Println(password)
25 | }
26 |
--------------------------------------------------------------------------------
/type-assertions.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func random() interface{} {
6 | return "Eko"
7 | }
8 |
9 | func main() {
10 | var result interface{} = random()
11 | //var resultString string = result.(string)
12 | //fmt.Println(resultString)
13 |
14 | switch value := result.(type) {
15 | case string:
16 | fmt.Println("Value", value, "is string")
17 | case int:
18 | fmt.Println("Value", value, "is int")
19 | default:
20 | fmt.Println("Unknown type")
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/if.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | var name = "Kurniawan"
7 |
8 | if name == "Eko" {
9 | fmt.Println("Hello Eko")
10 | } else if name == "Joko" {
11 | fmt.Println("Hello Joko")
12 | } else if name == "Budi" {
13 | fmt.Println("Hello Budi")
14 | } else {
15 | fmt.Println("Hi, kenalan donk")
16 | }
17 |
18 | if length := len(name); length > 5 {
19 | fmt.Println("Terlalu Panjang")
20 | } else {
21 | fmt.Println("Nama sudah benar")
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/function-as-parameter.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | type Filter func(string) string
6 |
7 | func sayHelloWithFilter(name string, filter Filter) {
8 | nameFiltered := filter(name)
9 | fmt.Println("Hello", nameFiltered)
10 | }
11 |
12 | func spamFilter(name string) string {
13 | if name == "Anjing" {
14 | return "..."
15 | }else {
16 | return name
17 | }
18 | }
19 |
20 | func main() {
21 | sayHelloWithFilter("Eko", spamFilter)
22 | sayHelloWithFilter("Anjing", spamFilter)
23 | }
24 |
--------------------------------------------------------------------------------
/variable.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | var name string
7 |
8 | name = "Eko Kurniawan"
9 | fmt.Println(name)
10 |
11 | name = "Eko Khannedy"
12 | fmt.Println(name)
13 |
14 | var friendName = "Budi"
15 | fmt.Println(friendName)
16 |
17 | var age = 30
18 | fmt.Println(age)
19 |
20 | country := "Indonesia"
21 | fmt.Println(country)
22 |
23 | var (
24 | firstName = "Eko"
25 | lastName = "Khannedy"
26 | )
27 |
28 | fmt.Println(firstName)
29 | fmt.Println(lastName)
30 | }
31 |
--------------------------------------------------------------------------------
/time.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "time"
6 | )
7 |
8 | func main() {
9 | now := time.Now()
10 |
11 | fmt.Println(now)
12 | fmt.Println(now.Year())
13 | fmt.Println(now.Month())
14 | fmt.Println(now.Day())
15 | fmt.Println(now.Hour())
16 | fmt.Println(now.Minute())
17 | fmt.Println(now.Second())
18 | fmt.Println(now.Nanosecond())
19 |
20 | utc := time.Date(2020, 10, 10, 10, 10, 10, 10, time.UTC)
21 | fmt.Println(utc)
22 |
23 | layout := "2006-01-02"
24 | parse, _ := time.Parse(layout, "1990-03-20")
25 | fmt.Print(parse)
26 | }
27 |
--------------------------------------------------------------------------------
/strconv.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "strconv"
6 | )
7 |
8 | func main() {
9 | boolean, err := strconv.ParseBool("true")
10 | if err == nil {
11 | fmt.Println(boolean)
12 | } else {
13 | fmt.Println(err.Error())
14 | }
15 |
16 | number, err := strconv.ParseInt("1000000", 10, 64)
17 | if err == nil {
18 | fmt.Println(number)
19 | } else {
20 | fmt.Println(err.Error())
21 | }
22 |
23 | value := strconv.FormatInt(1000000, 10)
24 | fmt.Println(value)
25 |
26 | valueInt, _ := strconv.Atoi("2000000")
27 | fmt.Println(valueInt)
28 | }
29 |
--------------------------------------------------------------------------------
/container-list.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "container/list"
5 | "fmt"
6 | )
7 |
8 | func main() {
9 | data := list.New()
10 |
11 | data.PushBack("Eko")
12 | data.PushBack("Kurniawan")
13 | data.PushBack("Khannedy")
14 | data.PushFront("Budi")
15 |
16 | // dari depan ke belakang
17 | for element := data.Front(); element != nil; element = element.Next() {
18 | fmt.Println(element.Value)
19 | }
20 |
21 | // dari belakang ke depan
22 | for element := data.Back(); element != nil; element = element.Prev() {
23 | fmt.Println(element.Value)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/array.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 |
7 | var names [3]string
8 |
9 | names[0] = "Eko"
10 | names[1] = "Kurniawan"
11 | names[2] = "Khannedy"
12 |
13 | fmt.Println(names[0])
14 | fmt.Println(names[1])
15 | fmt.Println(names[2])
16 |
17 | var values = [3]int{
18 | 90,
19 | 95,
20 | 80,
21 | }
22 |
23 | fmt.Println(values)
24 | fmt.Println(values[0])
25 | fmt.Println(values[1])
26 | fmt.Println(values[2])
27 |
28 | fmt.Println(len(names))
29 | fmt.Println(len(values))
30 |
31 | var lagi [10]string
32 |
33 | fmt.Println(len(lagi))
34 | }
35 |
--------------------------------------------------------------------------------
/flag.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "flag"
5 | "fmt"
6 | )
7 |
8 | func main() {
9 | var host *string = flag.String("host", "localhost", "Put your database host")
10 | var user *string = flag.String("user", "root", "Put your database user")
11 | var password *string = flag.String("password", "root", "Put your database password")
12 | var number *int = flag.Int("number", 100, "Put your number")
13 |
14 | flag.Parse()
15 |
16 | fmt.Println("Host : ", *host)
17 | fmt.Println("User : ", *user)
18 | fmt.Println("Password : ", *password)
19 | fmt.Println("Number : ", *number)
20 | }
21 |
--------------------------------------------------------------------------------
/function-recursive.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func factorialLoop(value int) int {
6 | result := 1
7 | for i := value; i > 0; i-- {
8 | result *= i // result = result * i
9 | }
10 | return result
11 | }
12 |
13 | func factorialRecursive(value int) int {
14 | if value == 1 {
15 | return 1
16 | } else {
17 | return value * factorialRecursive(value-1)
18 | }
19 | }
20 |
21 | func main() {
22 | loop := factorialLoop(10)
23 | fmt.Println(loop)
24 | // fmt.Println(5 * 4 * 3 * 2 * 1)
25 |
26 | recursive := factorialRecursive(10)
27 | fmt.Println(recursive)
28 | }
29 |
--------------------------------------------------------------------------------
/map.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 |
7 | person := map[string]string{
8 | "name": "Eko",
9 | "address": "Subang",
10 | }
11 |
12 | person["title"] = "Programmer"
13 |
14 | fmt.Println(person)
15 | fmt.Println(person["name"])
16 | fmt.Println(person["address"])
17 |
18 | var book map[string]string = make(map[string]string)
19 | book["title"] = "Belajar Go-Lang"
20 | book["author"] = "Eko"
21 | book["ups"] = "Salah"
22 | fmt.Println(book)
23 | fmt.Println(len(book))
24 |
25 | delete(book, "ups")
26 |
27 | fmt.Println(book)
28 | fmt.Println(len(book))
29 | }
30 |
--------------------------------------------------------------------------------
/strings.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "strings"
6 | )
7 |
8 | func main() {
9 | fmt.Println(strings.Contains("Eko Kurniawan", "Eko"))
10 | fmt.Println(strings.Contains("Eko Kurniawan", "Budi"))
11 |
12 | fmt.Println(strings.Split("Eko Kurniawna Khannedy", " "))
13 |
14 | fmt.Println(strings.ToLower("Eko Kurniawan Khannedy"))
15 | fmt.Println(strings.ToUpper("Eko Kurniawan Khannedy"))
16 | fmt.Println(strings.ToTitle("eko kurniawan khannedy"))
17 |
18 | fmt.Println(strings.Trim(" Eko Kurniawan ", " "))
19 | fmt.Println(strings.ReplaceAll("Eko Joko Eko", "Eko", "Budi"))
20 | }
21 |
--------------------------------------------------------------------------------
/for.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | for counter := 1; counter <= 10; counter++ {
7 | fmt.Println("Perulangan ke", counter)
8 | }
9 |
10 | slice := []string{"Eko", "Kurniawan", "Khannedy", "Budi", "Joko"}
11 |
12 | for i := 0; i < len(slice); i++ {
13 | fmt.Println(slice[i])
14 | }
15 |
16 | for i, value := range slice {
17 | fmt.Println("Index", i, "=", value)
18 | }
19 |
20 | person := make(map[string]string)
21 | person["name"] = "Eko"
22 | person["title"] = "Programmer"
23 |
24 | for key, value := range person {
25 | fmt.Println(key, "=", value)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/interface.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | type HasName interface {
6 | GetName() string
7 | }
8 |
9 | func SayHello(hasName HasName) {
10 | fmt.Println("Hello", hasName.GetName())
11 | }
12 |
13 | type Person struct {
14 | Name string
15 | }
16 |
17 | func (person Person) GetName() string {
18 | return person.Name
19 | }
20 |
21 | type Animal struct {
22 | Name string
23 | }
24 |
25 | func (animal Animal) GetName() string {
26 | return animal.Name
27 | }
28 |
29 | func main() {
30 | var eko Person
31 | eko.Name = "Eko"
32 |
33 | SayHello(eko)
34 |
35 | cat := Animal{
36 | Name: "Push",
37 | }
38 | SayHello(cat)
39 | }
40 |
--------------------------------------------------------------------------------
/sort.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "sort"
6 | )
7 |
8 | type User struct {
9 | Name string
10 | Age int
11 | }
12 |
13 | type UserSlice []User
14 |
15 | func (value UserSlice) Len() int {
16 | return len(value)
17 | }
18 |
19 | func (value UserSlice) Less(i, j int) bool {
20 | return value[i].Age < value[j].Age
21 | }
22 |
23 | func (value UserSlice) Swap(i, j int) {
24 | value[i], value[j] = value[j], value[i]
25 | }
26 |
27 | func main() {
28 | users := []User {
29 | {"Eko", 30},
30 | {"Jokok", 35},
31 | {"Budi", 31},
32 | {"Rudi", 25},
33 | }
34 |
35 | fmt.Println(users)
36 | sort.Sort(UserSlice(users))
37 | fmt.Println(users)
38 | }
39 |
--------------------------------------------------------------------------------
/switch.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 |
7 | name := "Kurniawan"
8 |
9 | switch name {
10 | case "Eko":
11 | fmt.Println("Hello Eko")
12 | fmt.Println("Hello Eko")
13 | case "Joko":
14 | fmt.Println("Hello Joko")
15 | fmt.Println("Hello Joko")
16 | default:
17 | fmt.Println("Kenalan Donk")
18 | fmt.Println("Kenalan Donk")
19 | }
20 |
21 | //switch length := len(name); length > 5 {
22 | //case true:
23 | // fmt.Println("Nama terlalu panjang")
24 | //case false:
25 | // fmt.Println("Nama sudah benar")
26 | //}
27 |
28 | length := len(name)
29 | switch {
30 | case length > 10:
31 | fmt.Println("Nama terlalu panjang")
32 | case length > 5:
33 | fmt.Println("Nama lumayan panjang")
34 | default:
35 | fmt.Println("Nama sudah benar")
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/struct.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | type Customer struct {
6 | Name, Address string
7 | Age int
8 | }
9 |
10 | func (customer Customer) sayHi(name string){
11 | fmt.Println("Hello", name, "My Name is", customer.Name)
12 | }
13 |
14 | func (a Customer) sayHuuu(){
15 | fmt.Println("Huuuuuu from", a.Name)
16 | }
17 |
18 | func main() {
19 | var eko Customer
20 | eko.Name = "Eko"
21 | eko.Address = "Indonesia"
22 | eko.Age = 30
23 |
24 | eko.sayHi("Joko")
25 | eko.sayHuuu()
26 |
27 | //fmt.Println(eko.Name)
28 | //fmt.Println(eko.Address)
29 | //fmt.Println(eko.Age)
30 | //
31 | //joko := Customer{
32 | // Name: "Joko",
33 | // Address: "Cirebon",
34 | // Age: 35,
35 | //}
36 | //fmt.Println(joko)
37 | //
38 | //budi := Customer{"Budi", "Jakarta", 35}
39 | //fmt.Println(budi)
40 | }
41 |
--------------------------------------------------------------------------------
/function-anonymous.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | type Blacklist func(string) bool
6 |
7 | func registerUser(name string, blacklist Blacklist) {
8 | if blacklist(name) {
9 | fmt.Println("You are blocked", name)
10 | } else {
11 | fmt.Println("Welcome", name)
12 | }
13 | }
14 |
15 | //func blacklistAdmin(name string) bool {
16 | // return name == "admin"
17 | //}
18 | //
19 | //func blacklistRoot(name string) bool {
20 | // return name == "root"
21 | //}
22 |
23 | func main() {
24 | blacklist := func(name string) bool {
25 | return name == "admin"
26 | }
27 |
28 | registerUser("admin", blacklist)
29 | registerUser("eko", blacklist)
30 |
31 | registerUser("root", func(name string) bool {
32 | return name == "root"
33 | })
34 | registerUser("eko", func(name string) bool {
35 | return name == "root"
36 | })
37 | }
38 |
--------------------------------------------------------------------------------
/pointer.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | type Address struct {
6 | City, Province, Country string
7 | }
8 |
9 | func ChangeCountryToIndonesia(address *Address){
10 | address.Country = "Indonesia"
11 | }
12 |
13 | func main() {
14 | var address1 Address = Address{"Subang", "Jawa Barat", "Indonesia"}
15 | // var address4 *Address = &Address{"Subang", "Jawa Barat", "Indonesia"}
16 | var address2 *Address = &address1
17 | var address3 *Address = &address1
18 |
19 | address2.City = "Bandung"
20 |
21 | *address2 = Address{"Malang", "Jawa Timur", "Indonesia"}
22 |
23 | fmt.Println(address1)
24 | fmt.Println(address2)
25 | fmt.Println(address3)
26 |
27 | var address4 *Address = new(Address)
28 | address4.City = "Jakarta"
29 | fmt.Println(address4)
30 |
31 | var alamat = Address{
32 | City: "Subang",
33 | Province: "Jawa Barat",
34 | Country: "",
35 | }
36 | var alamatPointer *Address = &alamat
37 | ChangeCountryToIndonesia(alamatPointer)
38 | fmt.Println(alamat)
39 | }
40 |
--------------------------------------------------------------------------------
/reflect.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "reflect"
6 | )
7 |
8 | type Sample struct {
9 | Name string `required:"true" max:"10"`
10 | }
11 |
12 | type ContohLagi struct {
13 | Name string `required:"true"`
14 | Description string `required:"true"`
15 | }
16 |
17 | func IsValid(data interface{}) bool {
18 | t := reflect.TypeOf(data)
19 | for i := 0; i < t.NumField(); i++ {
20 | field := t.Field(i)
21 | if field.Tag.Get("required") == "true" {
22 | value := reflect.ValueOf(data).Field(i).Interface()
23 | if value == "" {
24 | return false
25 | }
26 | }
27 | }
28 | return true
29 | }
30 |
31 | func main() {
32 | sample := Sample{"Eko"}
33 |
34 | var sampleType reflect.Type = reflect.TypeOf(sample)
35 |
36 | fmt.Println(sampleType.NumField())
37 | fmt.Println(sampleType.Field(0).Name)
38 | fmt.Println(sampleType.Field(0).Tag.Get("required"))
39 | fmt.Println(sampleType.Field(0).Tag.Get("max"))
40 |
41 | sample.Name = ""
42 | fmt.Println(IsValid(sample))
43 |
44 | contoh := ContohLagi{"Eko", "Oke"}
45 | fmt.Println(IsValid(contoh))
46 | }
47 |
--------------------------------------------------------------------------------
/slice.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "fmt"
4 |
5 | func main() {
6 | var months = [...]string{
7 | "Januari",
8 | "Februari",
9 | "Maret",
10 | "April",
11 | "Mei",
12 | "Juni",
13 | "Juli",
14 | "Agustus",
15 | "September",
16 | "Oktober",
17 | "November",
18 | "Desember",
19 | }
20 |
21 | var slice1 = months[4:7]
22 | fmt.Println(slice1)
23 | fmt.Println(len(slice1))
24 | fmt.Println(cap(slice1))
25 |
26 | //months[5] = "Diubah"
27 | //fmt.Println(slice1)
28 |
29 | //slice1[0] = "Mei Lagi"
30 | //fmt.Println(months)
31 |
32 | var slice2 = months[11:]
33 | fmt.Println(slice2)
34 |
35 | var slice3 = append(slice2, "Eko")
36 | fmt.Println(slice3)
37 | slice3[1] = "Bukan Desember"
38 | fmt.Println(slice3)
39 |
40 | fmt.Println(slice2)
41 | fmt.Println(months)
42 |
43 | newSlice := make([]string, 2, 5)
44 |
45 | newSlice[0] = "Eko"
46 | newSlice[1] = "Kurniawan"
47 |
48 | fmt.Println(newSlice)
49 | fmt.Println(len(newSlice))
50 | fmt.Println(cap(newSlice))
51 |
52 | copySlice := make([]string, len(newSlice), cap(newSlice))
53 | copy(copySlice, newSlice)
54 | fmt.Println(copySlice)
55 |
56 | iniArray := [5]int{1, 2, 3, 4, 5}
57 | iniSlice := []int{1, 2, 3, 4, 5}
58 |
59 | fmt.Println(iniArray)
60 | fmt.Println(iniSlice)
61 | }
62 |
--------------------------------------------------------------------------------