0Pricing
Go Academy · Pelajaran

Fungsi Opsi

Lakukan konfigurasi dengan fungsi

Fungsi Opsi adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Konfigurasikan dengan Fungsi

Gagasan utamanya: wakili setiap pengaturan opsional sebagai fungsi yang mengubah konfigurasi. Fungsi-fungsi ini disebut "fungsi opsi".

Tipe Opsi

Tentukan Option sebagai fungsi yang menerima penunjuk ke struktur konfigurasi.

package main

import "fmt"

type Config struct {
	Port    int
	Timeout int
}

type Option func(*Config)

func main() {
	var o Option
	fmt.Println(o == nil)
}

Menulis Opsi

Sebuah opsi mengembalikan closure yang menetapkan satu atribut. WithPort(9000) menghasilkan fungsi yang menetapkan Port = 9000.

package main

import "fmt"

type Config struct{ Port int }
type Option func(*Config)

func WithPort(p int) Option {
	return func(c *Config) { c.Port = p }
}

func main() {
	c := &Config{}
	WithPort(9000)(c)
	fmt.Println(c.Port)
}

Closure Menangkap Nilai

Fungsi yang dikembalikan menangkap argumennya. WithPort(9000) mengingat 9000 hingga diterapkan nanti.

Beberapa Opsi

Setiap pengaturan mendapatkan fungsi opsinya sendiri. Semuanya menggunakan tipe Option yang sama.

package main

import "fmt"

type Config struct {
	Port    int
	Timeout int
}
type Option func(*Config)

func WithPort(p int) Option    { return func(c *Config) { c.Port = p } }
func WithTimeout(t int) Option { return func(c *Config) { c.Timeout = t } }

func main() {
	c := &Config{}
	WithPort(80)(c)
	WithTimeout(15)(c)
	fmt.Printf("%+v\n", *c)
}

Opsi Penanda Logis

Opsi tanpa parameter dapat mengubah sebuah penanda.

package main

import "fmt"

type Config struct{ TLS bool }
type Option func(*Config)

func WithTLS() Option { return func(c *Config) { c.TLS = true } }

func main() {
	c := &Config{}
	WithTLS()(c)
	fmt.Println(c.TLS)
}

Menerapkan Daftar Opsi

Kumpulkan opsi dalam sebuah daftar dan terapkan masing-masing dalam perulangan — inilah inti konstruktor yang akan Anda buat berikutnya.

package main

import "fmt"

type Config struct{ Port, Timeout int }
type Option func(*Config)

func WithPort(p int) Option    { return func(c *Config) { c.Port = p } }
func WithTimeout(t int) Option { return func(c *Config) { c.Timeout = t } }

func main() {
	c := &Config{}
	opts := []Option{WithPort(8080), WithTimeout(30)}
	for _, opt := range opts {
		opt(c)
	}
	fmt.Printf("%+v\n", *c)
}

Urutan Itu Penting

Opsi diterapkan sesuai urutan. Jika dua opsi menetapkan atribut yang sama, opsi terakhir akan menang — terkadang berguna, tetapi terkadang juga menjadi jebakan yang perlu didokumentasikan.

Konvensi Penamaan

Berdasarkan konvensi, konstruktor opsi diberi nama With... (misalnya, WithPort dan WithTLS) agar lokasi pemanggilan terbaca seperti bahasa Inggris.

Opsi Dapat Memuat Logika

Opsi hanyalah sebuah fungsi, sehingga dapat memvalidasi, menghitung, atau menggabungkan nilai — bukan sekadar menetapkannya.

Mengapa Fungsi Lebih Unggul daripada Struktur di Sini

  • Hanya menetapkan atribut yang Anda sebutkan
  • Nama yang menjelaskan dirinya sendiri di lokasi pemanggilan
  • Menambahkan opsi baru tanpa merusak pemanggil

Pemeriksaan Singkat

Uji pemahaman Anda tentang fungsi opsi.

Ringkasan

Anda telah mempelajari cara membuat fungsi opsi.

  • Tentukan type Option func(*Config)
  • Konstruktor WithX mengembalikan closure yang mengubah konfigurasi
  • Terapkan daftar opsi dalam sebuah perulangan
  • Urutan itu penting; penetapan terakhir akan menang

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fungsi Opsi” gratis?

Ya — teks lengkap “Fungsi Opsi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fungsi Opsi”?

Lakukan konfigurasi dengan fungsi Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Fungsi Opsi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Masalah dengan Banyak Parameter
  2. Fungsi Opsi
  3. Membangun API yang Fleksibel
  4. Nilai Default dan Validasi
← Kembali ke Go Academy