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
WithXmengembalikan 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.