Mengenal Tipe Data Non-Primitif di Golang

Mengenal Tipe Data Non-Primitif di Golang

Pendahuluan

Selain tipe data primitif seperti int, float, dan bool, Golang juga menyediakan tipe data non-primitif yang lebih kompleks. Tipe data ini memungkinkan kita untuk menyimpan kumpulan data, membuat struktur yang lebih kompleks, dan menerapkan konsep yang lebih maju dalam pemrograman.

Dalam tutorial golang kali ini, kita akan mengenal beberapa tipe data non-primitif yang sering digunakan di Golang, seperti array, slice, map, struct, dan interface. Setiap tipe data akan dijelaskan dengan contoh kode yang dapat kalian praktekkan sendiri.

Namun, perlu diingat bahwa artikel ini hanya memberikan pengenalan dasar untuk setiap tipe data non-primitif tersebut. Untuk memahami lebih dalam dan menguasai masing-masing tipe data, kita akan membahasnya secara lebih rinci dalam artikel-artikel terpisah.

Di artikel-artikel mendatang, kita akan mengeksplorasi fitur-fitur lanjutan, kasus penggunaan, dan praktik terbaik dalam menggunakan array, slice, map, struct, dan interface di Golang. Tetap ikuti seri tutorial ini untuk memperdalam pemahaman kalian mengenai tipe data non-primitif di Golang.

Array

Array adalah kumpulan elemen dengan tipe data yang sama dan ukuran yang tetap. Setiap elemen dalam array dapat diakses menggunakan indeks.:

package main

import "fmt"

func main() {
    var angka [5]int
    angka[0] = 10
    angka[1] = 20
    angka[2] = 30
    angka[3] = 40
    angka[4] = 50

    fmt.Println("Isi array:", angka)
}

Dalam contoh di atas, kita mendeklarasikan array angka dengan ukuran 5 dan menambahkan nilai pada setiap indeksnya.

Slice

Slice adalah tipe data yang lebih fleksibel dibandingkan array. Slice memungkinkan kita untuk bekerja dengan subset dari elemen array tanpa menentukan ukuran terlebih dahulu. Contoh Penggunaan Slice:

package main

import "fmt"

func main() {
    angka := []int{10, 20, 30, 40, 50}
    potong := angka[1:4]

    fmt.Println("Isi slice:", potong)
}

Di sini, potong adalah slice yang berisi elemen dari indeks 1 sampai 3 dari array angka.

  1. Map Map adalah koleksi pasangan key-value yang tidak berurutan. Map memungkinkan kita untuk menyimpan data dengan kunci unik yang bisa berupa tipe data apapun, seperti string atau integer.

Contoh Penggunaan Map:

package main

import "fmt"

func main() {
    mahasiswa := map[string]int{
        "Budi":  21,
        "Susi":  22,
        "Joko":  23,
    }

    fmt.Println("Umur Budi:", mahasiswa["Budi"])
}

Contoh di atas menunjukkan bagaimana map mahasiswa menyimpan nama sebagai kunci dan umur sebagai nilai.

Struct

Struct adalah kumpulan dari berbagai tipe data yang berbeda, memungkinkan kita untuk membuat objek yang lebih kompleks.

Contoh Penggunaan Struct:

package main

import "fmt"

type Mahasiswa struct {
    Nama  string
    Umur  int
    Jurusan string
}

func main() {
    mhs := Mahasiswa{"Andi", 20, "Informatika"}

    fmt.Println("Nama:", mhs.Nama)
    fmt.Println("Umur:", mhs.Umur)
    fmt.Println("Jurusan:", mhs.Jurusan)
}

Struct Mahasiswa di atas menggabungkan tiga tipe data berbeda: string untuk Nama dan Jurusan, serta int untuk Umur.

Interface

Interface adalah tipe data yang mendefinisikan serangkaian metode, tetapi tidak memiliki implementasi. Interface memungkinkan polymorphism di Golang, dimana satu fungsi bisa menerima berbagai tipe data yang berbeda selama tipe data tersebut mengimplementasikan metode yang sama.

Contoh Penggunaan Interface:

package main

import "fmt"

type Hewan interface {
    Suara() string
}

type Anjing struct{}

func (a Anjing) Suara() string {
    return "Guk guk!"
}

type Kucing struct{}

func (k Kucing) Suara() string {
    return "Meong!"
}

func cetakSuara(h Hewan) {
    fmt.Println(h.Suara())
}

func main() {
    anjing := Anjing{}
    kucing := Kucing{}

    cetakSuara(anjing)
    cetakSuara(kucing)
}

Dalam contoh ini, Anjing dan Kucing mengimplementasikan interface Hewan, memungkinkan fungsi cetakSuara untuk memanggil metode Suara pada kedua tipe data tersebut.

Tipe data non-primitif di Golang seperti array, slice, map, struct, dan interface memungkinkan kita untuk membuat program yang lebih dinamis dan fleksibel.

Dengan memahami cara kerja dan penggunaannya, kita bisa membangun aplikasi yang lebih kompleks dan efisien. Jangan ragu untuk mencoba kode-kode di atas dan eksplorasi lebih lanjut!