Membina API Fleksibel
Gunakan corak ini
Membina API Fleksibel ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Gunakan Corak Ini
Sekarang pasang keseluruhan corak: pembina yang menerima argumen wajib serta senarai pilihan yang bilangannya boleh berubah-ubah.
Pembina Variadik
Parameter wajib datang dahulu; pilihan menyusul sebagai ...Option.
package main
import "fmt"
type Server struct {
Host string
Port int
}
type Option func(*Server)
func WithPort(p int) Option { return func(s *Server) { s.Port = p } }
func NewServer(host string, opts ...Option) *Server {
s := &Server{Host: host}
for _, opt := range opts {
opt(s)
}
return s
}
func main() {
s := NewServer("localhost", WithPort(8080))
fmt.Printf("%+v\n", *s)
}Memanggil Tanpa Pilihan
Memandangkan pilihan adalah variadik, pemanggil boleh meninggalkannya sepenuhnya dan bergantung pada perkara yang disediakan oleh pembina.
package main
import "fmt"
type Server struct{ Host string; Port int }
type Option func(*Server)
func NewServer(host string, opts ...Option) *Server {
s := &Server{Host: host}
for _, o := range opts { o(s) }
return s
}
func main() {
s := NewServer("localhost")
fmt.Printf("%+v\n", *s)
}Memanggil dengan Beberapa Pilihan
Susun seberapa banyak pilihan yang anda mahu; setiap satunya dibaca dengan jelas di lokasi panggilan.
package main
import "fmt"
type Server struct {
Host string
Port int
Timeout int
TLS bool
}
type Option func(*Server)
func WithPort(p int) Option { return func(s *Server) { s.Port = p } }
func WithTimeout(t int) Option { return func(s *Server) { s.Timeout = t } }
func WithTLS() Option { return func(s *Server) { s.TLS = true } }
func NewServer(host string, opts ...Option) *Server {
s := &Server{Host: host}
for _, o := range opts { o(s) }
return s
}
func main() {
s := NewServer("localhost", WithPort(9000), WithTimeout(60), WithTLS())
fmt.Printf("%+v\n", *s)
}Panggilan yang Menerangkan Dirinya Sendiri
Bandingkan NewServer("localhost", WithPort(9000), WithTLS()) dengan panggilan mengikut kedudukan. Tujuannya jelas tanpa perlu menyemak tandatangan.
Menambah Pilihan Kemudian
Perlukan tetapan baharu? Tambah fungsi WithX. Setiap lokasi panggilan sedia ada terus dikompil tanpa perubahan — benar-benar serasi ke belakang.
package main
import "fmt"
type Server struct{ Host string; Retries int }
type Option func(*Server)
func WithRetries(n int) Option { return func(s *Server) { s.Retries = n } }
func NewServer(host string, opts ...Option) *Server {
s := &Server{Host: host}
for _, o := range opts { o(s) }
return s
}
func main() {
fmt.Printf("%+v\n", *NewServer("h", WithRetries(5)))
}Menghantar Pilihan
Memandangkan pilihan ialah nilai, anda boleh membina kepingan di tempat lain dan menghantarnya ke dalam pembina.
package main
import "fmt"
type Server struct{ Host string; Port int }
type Option func(*Server)
func WithPort(p int) Option { return func(s *Server) { s.Port = p } }
func NewServer(host string, opts ...Option) *Server {
s := &Server{Host: host}
for _, o := range opts { o(s) }
return s
}
func main() {
common := []Option{WithPort(443)}
s := NewServer("api", common...)
fmt.Printf("%+v\n", *s)
}Pilihan sebagai API Awam
Eksport jenis Option dan fungsi WithX supaya pengguna pustaka boleh mengkonfigurasi jenis anda tanpa menyentuh bahagian dalamannya.
Mengekalkan Medan Persendirian
Medan konfigurasi boleh kekal tidak dieksport; pilihan ialah satu-satunya cara yang dibenarkan untuk menetapkannya, sekali gus melindungi invarian.
Keadaan yang Sesuai untuk Corak Ini
- Pembina pustaka dengan banyak tetapan pilihan
- API yang perlu kekal stabil apabila berkembang
- Pelanggan, pelayan, pencatat dan pembina
Contoh dalam Pustaka Standard
Anda akan melihat gaya ini di seluruh ekosistem Go (gRPC dan banyak pemacu). Mengenalinya menjadikan API tersebut lebih mudah difahami.
Semakan Pantas
Uji pengetahuan anda tentang API fleksibel.
Imbas Kembali
Anda telah membina API fleksibel dengan pilihan fungsian.
- Argumen wajib dahulu, kemudian
...Option - Ulang melalui pilihan dan gunakan setiap satunya
- Pemanggil boleh menghantar sifar atau banyak pilihan dengan jelas
- Tambah pilihan kemudian tanpa memecahkan pemanggil
Pelajari Go dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Membina API Fleksibel” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “Membina API Fleksibel”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Membina API Fleksibel”?
Gunakan corak ini Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Go Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Membina API Fleksibel” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Masalah dengan Banyak Parameter
- Fungsi Pilihan
- Membina API Fleksibel
- Nilai Lalai dan Pengesahan