Selalu ingin mencoba hal - hal yang baru meski penuh resiko dan tantangan yang sulit. "Kain kafan tidak berkantung".

Golang tutorial indonesia – Struct

1
Degananda.com -

Mengapa membutuhkan non built in data type

Golang telah menyediakan tipe date built in seperti number yang terdiri dari integer dan float, string serta boolean. Namun , dengan hanya memanfaatkan ketiga tipe data tersebut tentu kita tidak dapat membuat program yang kita inginkan(sesuai dengan design). Terkadang dibutuhkan suatu tipe data custom yang sesuai dengan design.

Contohnya untuk menggambarkan “Orang” kita memerlukan tipe data yang setidaknya menyimpan beberapa attribute diantarannya

  1. Nama dari orang tersebut
  2. Umur dari orang tersebut
  3. Alamat dari orang tersebut

Apa bisa menggambarkan data mengenai orang diatas dengan hanya memanfaatkan built in data type ? jawabannya tentu bisa namun penggunaannya sangat kurang tepat.

Struct

Untuk menggambarkan data “custom” atau sesuai dengan desain dari programmer maka pada golang menyediakan suatu fitur yang bernama struct. Jika anda pernah melakukan pemrograman java struct ini layaknya suatu class yang memilikia attribute dan method serta dapat dilakukan instansiasi (membuat object).

Implementasi struct

Kita akan membuat tipe data yang menggambarkan orang dengan tiga buah attribute

  1. Nama memiliki tipe string
  2. Alamat  memiliki tipe string
  3. Umur memiliki tipe int32/int , kita menggunakan bilangan bulat meski nama sebenarnya dapat berupa floating point.

format penulisan struct pada golang adalah

type Nama_struct struct { //attr }

kita dapat mengisi attr yang berada didalam bracket dengan attribute yang menggambarkan struct tersebut. Penulsain attribute tersebut ditulis secara vertikal kebawah.

Usahakan nama dari struct diawali dengan huruf besar.  Sedangkan untuk nama attribute dapat menggnakan camelCase hindari penggunaan underscore. Sangat tidak direkomendasikan oleh GO

Perhatikan kode dibawah ini

package main

func main() {

	type Orang struct {
		nama   string
		alamat string
		umur   int
	}

}

keyword “type” berguna untuk mengindikasikan bahwa terdapat tipe baru yang digunakan dalam program dengan jenis berupa “struct”. Struct adalah tipedata custom yang dapat dibuat oleh programmer dengan spesifikasi tertentu (attribute & method). Didalam brakcet ({}) adalah daftar attribute atau field dari struct tersebut.

Attribute atau field adalah variable yang menggambarkan struct tersebut. Contohnya kita memiliki struct mobil maka field / attribute yang merupakan ciri-ciri mobil adalah

  1. jumlah roda
  2. body
  3. spoiler
  4. dan lain sebagainnya

jika anda lebih nyaman menuliskan attribute / field dari struct dengan mendatar (horizontal) maka anda dapat menulisnya dengan cara seperti ini (khusus untuk attribute yang memiliki tipedata sama).

package main

func main() {

	type Orang struct {
		nama, alamat string
		umur         int
	}

}

Itulah cara membuat struct pada bahasa pemrograman go.

Initialization

Jika anda pernah memprogram dengan bahasa java untuk membuat instances dari object maka menggunakan new Object().  Pada golang kita juga dapat melakukan dengan hal yang sama namun dengan cara penulisan yang berbeda formatnya adalah

nama_instances := Nama_struct{attr}

Contohnya jika kita menggunakan struct diatas dan misalnya ingin membuat instances “dega” maka kode yang digunakan adalah

package main

func main() {

	type Orang struct {
		nama, alamat string
		umur         int
	}

	dega := Orang{
		nama:   "degananda",
		alamat: "jl xxxx",
		umur:   17,
	}

}

penulisan attribute pada instances jika ditulis secara horizontal seperti itu harus ditambahkan “,” koma disetiap ahir dari line.  Anda juga dapat menuliskannya tanpa nama attribute dengan hanya melihat urutana dari attribute tersebut [1] nama [2] alamat [3] umur. Perhatikan kode dibawah ini

package main

func main() {

	type Orang struct {
		nama, alamat string
		umur         int
	}

	dega := Orang{"degananda", "jl xxxx", 17}

}

sampai tahap ini kita telah berhasil membuat instances dari suatu struct. Lalu selanjutnya adalah bagaimana cara menampilkan attribute atau bahkan mengubah data didalamnya ?

Menampilkan nilai attribute

kita dapat menggunakan dot (“.”) untuk menggambil nilai attribute dari suatu struct. Contohnya untuk mengambil nama dari instances dega cukup kita tulis seperti dibawah ini

package main

import (
	"fmt"
)

func main() {

	type Orang struct {
		nama, alamat string
		umur         int
	}

	dega := Orang{"degananda", "jl xxxx", 17}
	fmt.Println("nama : ", dega.nama)
	fmt.Println("umur : ", dega.alamat)

}

Mengubah data pada struct

Sebelum kita membahas mengenai cara mengubah data pada struct , pada ulasan sebelum ini mengenai fungsi kita telah mengenal pointer. Yakni suatu penunjuk yang berguna untuk mengubah data divariable dan memory tertentu atau dapat disebut untuk melakukan binding. Untuk mengubah data struct kita harus menggunakan pointer.

Contohnya kita akan mengubah nama dari instances dega menjadi “Tono” dan umurnya menjadi “85” Perhatikan kode dibawah ini

package main

import (
	"fmt"
)

type Orang struct {
	nama, alamat string
	umur         int
}

func main() {

	dega := &Orang{"degananda", "jl xxxx", 17}
	ubahDega(dega)
	fmt.Println("nama : ", dega.nama)
	fmt.Println("umur", dega.umur)
}

func ubahDega(inputDega *Orang) {
	inputDega.nama = "Tono"
	inputDega.umur = 85
}

instances dega kita berikan simbol “&” setelah itu kita membuat suatu fungsi bernama ubahDega() yang memiliki parameter berupa pointer. Dengan mekanisme pointer seperti ini kita dapat mengubah data pada instances dega melalui fungsi.

Jika anda tidak membutuhkan pointer maka mengubah data pada suatu struct sangat simpel dengan hanya menggunakan dot “.”. Perhatikan kode dibawah ini

package main

import (
	"fmt"
)

func main() {

	type Orang struct {
		nama, alamat string
		umur         int
	}

	dega := Orang{"degananda", "jl xxxx", 17}
	dega.nama = "Tono"
	dega.umur = 85
	fmt.Println(dega)

}

kode diatas jika dieksekusi akan menghasilkan hasil seperti dibawah ini

  • M Fajar Darmawan

    gan bisa minta contact wa nya ga?