Struct
Struct adalah kumpulan data field yang dideklarasikan dengan tipe data. Struct berfungsi sebagai sebuah template untuk kumpulan beberapa data. Jika dibandingkan dengan pemrograman berorientasi objek, struct ini hampir sama seperti sebuah objek atau class. Biasanya, struct digunakan sebagai representasi dari sebuah data dalam aplikasi kita. Contoh data yang bisa dijadikan struct yaitu seperti user, product, dan lain-lain.
Sebagai contoh, misalkan kita memiliki data user dengan atribut name, email, dan age. Maka berikut ini contoh kodenya jika dituliskan dalam bentuk struct:
type User struct {
Name, Email string
Age int
}
Membuat Data Berdasarkan Struct
Seperti yang sudah kita pahami sebelumnya, struct hanyalah template untuk suatu data. Saat kita membuat struct, kita tidak bisa langsung menggunakannya karena tidak memiliki data apapun. Kita bisa membuat data berdasarkan struct yang sudah kita buat. Hal ini hampir sama seperti saat kita membuat sebuah objek berdasarkan class pada pemrograman berorientasi objek.
Untuk membuat data berdasarkan struct, kita bisa mendeklarasikan sebuah variabel dengan tipe data struct yang ingin kita gunakan. Perhatikan contoh berikut ini:
type User struct {
Name, Email string
Age int
}
func main() {
var user User
user.Name = "Rizky"
user.Email = "[email protected]"
user.Age = 22
fmt.Println(user)
}
output:
{Rizky [email protected] 22}
Untuk mengambil data berdasarkan field kita bisa gunakan tanda titik seperti ini:
fmt.Println(user.Name)
fmt.Println(user.Email)
fmt.Println(user.Age)
output:
Rizky
[email protected]
22
Struct Literals
Ada beberapa cara yang bisa kita gunakan untuk membuat struct, salah satunya adalah dengan membuat struct dan mengisi datanya secara langsung. Berikut ini contohnya:
Dengan menyebutkan nama field:
var user1 = User{
Name: "User 1",
Email: "[email protected]",
Age: 22,
}
Tanpa menyebutkan nama field:
var user2 = User{
"User 2",
"[email protected]",
20,
}
Perlu diperhatikan, ketika kita membuat data struct tanpa menyebutkan nama fieldnya, maka urutan data tiap field harus sesuai dengan struct-nya. Jika urutannya tidak sesuai, maka rentan terjadi error saat ada perubahan pada struct. Oleh karena itu, disarankan mengunakan cara yang menyebutkan nama field karena lebih aman jika struct kita ubah.
Struct Method
Dalam pemrograman berorientasi objek, kita biasa membuat sebuah class yang di dalamnya terdapat satu atau lebih method yang memiliki tugasnya masing-masing. Di Golang, kita juga bisa membuat sebuah struct agar seolah-olah memiliki method seperti class dalam pemrograman berorientasi objek.
Cara membuat struct method adalah dengan menuliskan struct yang ingin kita tambahkan method di depan deklarasi function. Agar tidak membingungkan, berikut ini adalah contoh membuat struct method:
package main
import fmt
// Membuat struct User
type User struct {
Name, Email string
Age int
}
// Membuat method yang akan ditempelkan pada struct User.
// kita menuliskan struct-nya di depan nama function,
// lalu bisa kita gunakan struct tersebut dalam function yang kita buat.
func (user User) GetName() string {
return user.Name
}
// Contoh, menambahkan method lainnya pada stuct User.
funct (user User) GetEmail() string {
return user.Email
}
func main() {
var user User
user.Name = "Rizky"
user.Email = "[email protected]"
user.Age = 22
// karena struct user sudah ditambahkan method, sekarang kita bisa menggunakannya
fmt.Println(user.GetName())
fmt.Println(user.GetEmail())
}
output:
Rizky
[email protected]
Berikutnya: #31: Interface