Pergi - Struktur

Array Go memungkinkan Anda untuk mendefinisikan variabel yang dapat menampung beberapa item data dari jenis yang sama. Structure adalah tipe data lain yang ditentukan pengguna yang tersedia dalam pemrograman Go, yang memungkinkan Anda menggabungkan item data dari berbagai jenis.

Struktur digunakan untuk merepresentasikan record. Misalkan Anda ingin melacak buku-buku di perpustakaan. Anda mungkin ingin melacak atribut berikut dari setiap buku -

  • Title
  • Author
  • Subject
  • ID Buku

Dalam skenario seperti itu, struktur sangat berguna.

Mendefinisikan Struktur

Untuk menentukan struktur, Anda harus menggunakan type dan structpernyataan. Pernyataan struct mendefinisikan tipe data baru, dengan banyak anggota untuk program Anda. Pernyataan type mengikat nama dengan tipe yang struct dalam kasus kami. Format pernyataan struct adalah sebagai berikut -

type struct_variable_type struct {
   member definition;
   member definition;
   ...
   member definition;
}

Setelah tipe struktur ditentukan, itu dapat digunakan untuk mendeklarasikan variabel dari tipe itu menggunakan sintaks berikut.

variable_name := structure_variable_type {value1, value2...valuen}

Mengakses Anggota Struktur

Untuk mengakses anggota struktur mana pun, kami menggunakan member access operator (.).Operator akses anggota dikodekan sebagai periode antara nama variabel struktur dan anggota struktur yang ingin kita akses. Anda akan menggunakanstructkata kunci untuk mendefinisikan variabel jenis struktur. Contoh berikut menjelaskan cara menggunakan struktur -

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}
func main() {
   var Book1 Books    /* Declare Book1 of type Book */
   var Book2 Books    /* Declare Book2 of type Book */
 
   /* book 1 specification */
   Book1.title = "Go Programming"
   Book1.author = "Mahesh Kumar"
   Book1.subject = "Go Programming Tutorial"
   Book1.book_id = 6495407

   /* book 2 specification */
   Book2.title = "Telecom Billing"
   Book2.author = "Zara Ali"
   Book2.subject = "Telecom Billing Tutorial"
   Book2.book_id = 6495700
 
   /* print Book1 info */
   fmt.Printf( "Book 1 title : %s\n", Book1.title)
   fmt.Printf( "Book 1 author : %s\n", Book1.author)
   fmt.Printf( "Book 1 subject : %s\n", Book1.subject)
   fmt.Printf( "Book 1 book_id : %d\n", Book1.book_id)

   /* print Book2 info */
   fmt.Printf( "Book 2 title : %s\n", Book2.title)
   fmt.Printf( "Book 2 author : %s\n", Book2.author)
   fmt.Printf( "Book 2 subject : %s\n", Book2.subject)
   fmt.Printf( "Book 2 book_id : %d\n", Book2.book_id)
}

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Book 1 title      : Go Programming
Book 1 author     : Mahesh Kumar
Book 1 subject    : Go Programming Tutorial
Book 1 book_id    : 6495407
Book 2 title      : Telecom Billing
Book 2 author     : Zara Ali
Book 2 subject    : Telecom Billing Tutorial
Book 2 book_id    : 6495700

Struktur sebagai Argumen Fungsi

Anda dapat mengirimkan struktur sebagai argumen fungsi dengan cara yang sangat mirip seperti Anda meneruskan variabel atau penunjuk lainnya. Anda akan mengakses variabel struktur dengan cara yang sama seperti yang Anda lakukan pada contoh di atas -

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}
func main() {
   var Book1 Books    /* Declare Book1 of type Book */
   var Book2 Books    /* Declare Book2 of type Book */
 
   /* book 1 specification */
   Book1.title = "Go Programming"
   Book1.author = "Mahesh Kumar"
   Book1.subject = "Go Programming Tutorial"
   Book1.book_id = 6495407

   /* book 2 specification */
   Book2.title = "Telecom Billing"
   Book2.author = "Zara Ali"
   Book2.subject = "Telecom Billing Tutorial"
   Book2.book_id = 6495700
 
   /* print Book1 info */
   printBook(Book1)

   /* print Book2 info */
   printBook(Book2)
}
func printBook( book Books ) {
   fmt.Printf( "Book title : %s\n", book.title);
   fmt.Printf( "Book author : %s\n", book.author);
   fmt.Printf( "Book subject : %s\n", book.subject);
   fmt.Printf( "Book book_id : %d\n", book.book_id);
}

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Book title     : Go Programming
Book author    : Mahesh Kumar
Book subject   : Go Programming Tutorial
Book book_id   : 6495407
Book title     : Telecom Billing
Book author    : Zara Ali
Book subject   : Telecom Billing Tutorial
Book book_id   : 6495700

Petunjuk ke Struktur

Anda dapat mendefinisikan pointer ke struktur dengan cara yang sama seperti Anda mendefinisikan pointer ke variabel lain sebagai berikut -

var struct_pointer *Books

Sekarang, Anda dapat menyimpan alamat variabel struktur di variabel penunjuk yang ditentukan di atas. Untuk menemukan alamat variabel struktur, letakkan operator & sebelum nama struktur sebagai berikut -

struct_pointer = &Book1;

Untuk mengakses anggota struktur menggunakan penunjuk ke struktur itu, Anda harus menggunakan "." operator sebagai berikut -

struct_pointer.title;

Mari kita tulis ulang contoh di atas menggunakan pointer struktur -

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}
func main() {
   var Book1 Books   /* Declare Book1 of type Book */
   var Book2 Books   /* Declare Book2 of type Book */
 
   /* book 1 specification */
   Book1.title = "Go Programming"
   Book1.author = "Mahesh Kumar"
   Book1.subject = "Go Programming Tutorial"
   Book1.book_id = 6495407

   /* book 2 specification */
   Book2.title = "Telecom Billing"
   Book2.author = "Zara Ali"
   Book2.subject = "Telecom Billing Tutorial"
   Book2.book_id = 6495700
 
   /* print Book1 info */
   printBook(&Book1)

   /* print Book2 info */
   printBook(&Book2)
}
func printBook( book *Books ) {
   fmt.Printf( "Book title : %s\n", book.title);
   fmt.Printf( "Book author : %s\n", book.author);
   fmt.Printf( "Book subject : %s\n", book.subject);
   fmt.Printf( "Book book_id : %d\n", book.book_id);
}

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Book title     : Go Programming
Book author    : Mahesh Kumar
Book subject   : Go Programming Tutorial
Book book_id   : 6495407
Book title     : Telecom Billing
Book author    : Zara Ali
Book subject   : Telecom Billing Tutorial
Book book_id   : 6495700