Go Academy · Pelajaran

Membina API Fleksibel

Gunakan corak ini

Pelajaran 3 daripada 413 langkah

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
Percuma untuk bermula

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

  1. Masalah dengan Banyak Parameter
  2. Fungsi Pilihan
  3. Membina API Fleksibel
  4. Nilai Lalai dan Pengesahan
← Kembali ke Go Academy