Mendefinisikan Method pada Struct
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 6 dari 68.
Di Go, method adalah fungsi yang dimiliki oleh tipe tertentu. Berbeda dengan fungsi biasa yang berdiri sendiri, method melekat pada struct dan memungkinkan kamu menentukan perilaku untuk tipe data kustommu.
Untuk mendefinisikan method, letakkan receiver di antara kata kunci func dan nama method. Receiver menentukan tipe yang memiliki method tersebut.
type Person struct {
Name string
Age int
}
func (p Person) greet() {
fmt.Printf("Hello, my name is %s\n", p.Name)
}Dalam contoh ini, (p Person) adalah penerima, sehingga greet menjadi method dari tipe Person. Variabel p mewakili instans Person yang menjadi sasaran pemanggilan method tersebut, mirip dengan this dalam bahasa lain.
Kamu kemudian dapat memanggil method menggunakan notasi titik pada instance Person mana pun, sehingga struct-mu dapat melakukan tindakan yang terkait dengan datanya.
Tantangan
MudahDalam tantangan ini, kamu akan berlatih mendefinisikan method pada struct dengan membuat sistem manajemen buku sederhana. Kamu akan membuat struct Book dan mendefinisikan method yang memungkinkan buku menampilkan informasinya.
Catatan penting: Karena judul buku dan nama penulis dapat berisi spasi, kamu perlu menggunakan bufio.Scanner untuk membaca seluruh baris input. Fungsi fmt.Scanln berhenti membaca pada spasi pertama, sehingga judul dan nama penulis yang terdiri dari beberapa kata tidak akan terbaca dengan benar. Gunakan bufio.NewScanner(os.Stdin) dan panggil scanner.Scan(), lalu scanner.Text() untuk membaca baris secara lengkap.
Kamu akan menerima tiga input:
- String yang mewakili judul buku (misalnya,
"The Go Programming Language") - String yang mewakili nama penulis (misalnya,
"Alan Donovan") - String yang mewakili jumlah halaman (misalnya,
"380")
Tugasmu adalah:
- Mendefinisikan struct
Bookdengan tiga field:Title(string),Author(string), danPages(int) - Membuat method bernama
displayInfodengan penerima nilai yang mencetak informasi buku dalam format:"Title: [title], Author: [author], Pages: [pages]" - Membuat method bernama
getDescriptiondengan penerima nilai yang mengembalikan string dalam format:"[title] by [author]" - Menggunakan
bufio.Scanneruntuk membaca baris input dengan benar:- Membuat scanner:
scanner := bufio.NewScanner(os.Stdin) - Untuk setiap baris input: panggil
scanner.Scan(), laluscanner.Text() - Ini memastikan judul dan nama penulis yang mengandung spasi terbaca dengan benar
- Membuat scanner:
- Mengurai input untuk membuat instance
Book - Memanggil method
displayInfountuk mencetak informasi buku - Memanggil method
getDescriptiondan mencetak deskripsi yang dikembalikan
Method harus menggunakan variabel penerima untuk mengakses field struct dan menjalankan operasi masing-masing. Ingat, method dengan penerima nilai bekerja menggunakan salinan instance struct.
Coba sendiri
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
// TODO: Definisikan struct Book-mu di sini
// TODO: Definisikan method displayInfo-mu di sini
// TODO: Definisikan method getDescription-mu di sini
func main() {
// Buat scanner untuk membaca baris input
scanner := bufio.NewScanner(os.Stdin)
// Baca judul
scanner.Scan()
title := scanner.Text()
// Baca nama penulis
scanner.Scan()
author := scanner.Text()
// Baca jumlah halaman
scanner.Scan()
pagesStr := scanner.Text()
// Ubah string pages menjadi bilangan bulat
pages, _ := strconv.Atoi(pagesStr)
// TODO: Buat instance Book dan panggil method-nya
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan PerilakuLatihan sendiri: Compiler Go online