Menu
CoddyTech

Struct Anonim

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GO di Coddy. Pelajaran 15 dari 107.

struct anonim adalah struct tanpa tipe bernama. Kamu menentukan strukturnya dan membuat instance dalam satu langkah, tanpa menggunakan kata kunci type.

person := struct {
    Name string
    Age  int
}{
    Name: "Alice",
    Age:  30,
}

Ini membuat nilai struct secara langsung tanpa mendeklarasikan tipe yang dapat digunakan kembali. struct anonim berguna saat kamu membutuhkan struktur data sekali pakai dengan cepat yang tidak akan digunakan di bagian lain kodemu.

Kasus penggunaan yang umum adalah mengelompokkan data terkait untuk satu fungsi atau pengujian.

config := struct {
    Host string
    Port int
}{
    Host: "localhost",
    Port: 8080,
}
fmt.Println(config.Host) // localhost

struct anonim juga populer dalam pengujian berbasis tabel, saat setiap kasus uji memiliki field yang unik.

tests := []struct {
    input    int
    expected int
}{
    {1, 2},
    {5, 10},
}

Karena struct anonim tidak memiliki nama tipe, kamu tidak dapat mendefinisikan method untuknya atau menggunakan kembali tipe tersebut di tempat lain. Gunakan struct anonim untuk mengelompokkan data sementara dan lokal. Untuk apa pun yang akan kamu rujuk beberapa kali, definisikan tipe struct bernama.

challenge icon

Tantangan

Mudah

Mari buat sistem konfigurasi sederhana yang menunjukkan keunggulan struct anonim untuk mengelompokkan data sekali pakai yang tidak memerlukan tipe yang dapat digunakan kembali.

Kamu akan mengatur kodemu dalam dua file:

  • config.go: Buat fungsi bernama GetServerConfig yang menerima nama server (string), port (int), dan mode debug (bool) sebagai parameter. Fungsi ini harus mengembalikan struct anonim yang berisi ketiga nilai ini sebagai field: Name, Port, dan Debug. Karena konfigurasi ini hanya digunakan di satu tempat, kamu tidak perlu mendefinisikan tipe bernama untuknya.
  • main.go: Baca nilai konfigurasi server dari input, panggil fungsi GetServerConfig, lalu tampilkan detail konfigurasi.

Input berikut akan diberikan:

  • Baris 1: Nama server
  • Baris 2: Nomor port
  • Baris 3: Mode debug (true atau false)

Format output:

Server: [Name]
Port: [Port]
Debug: [Debug]

Contohnya, jika diberikan api-server, 8080, dan true, outputmu seharusnya:

Server: api-server
Port: 8080
Debug: true

Perhatikan bagaimana struct anonim memungkinkanmu mengembalikan data yang dikelompokkan tanpa memenuhi codebase-mu dengan tipe yang hanya digunakan sekali.

Coba sendiri

package main

import (
	"fmt"
)

func main() {
	// Baca nilai input
	var name string
	var port int
	var debug bool

	fmt.Scanln(&name)
	fmt.Scanln(&port)
	fmt.Scanln(&debug)

	// TODO: Panggil GetServerConfig dengan nilai input
	// dan simpan struct anonim yang dikembalikan

	// TODO: Cetak konfigurasi dalam format yang diminta:
	// Server: [Name]
	// Port: [Port]
	// Debug: [Debug]
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Go online