Varsayılanlar ve Doğrulama
Makul varsayılanlar belirleyin
Varsayılanlar ve Doğrulama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Makul Varsayılanlar Belirleme
Sağlam bir oluşturucu iyi varsayılanlarla başlar, ardından seçeneklerin bunları geçersiz kılmasına izin verir. Böylece sıfır değeri tuzağından tamamen kaçınılır.
Uygulamadan Önce Başlatma
Yapılandırmayı önce varsayılanlarla oluşturun, ardından seçenekleri bunun üzerine uygulayın.
package main
import "fmt"
type Server struct {
Port int
Timeout int
}
type Option func(*Server)
func WithPort(p int) Option { return func(s *Server) { s.Port = p } }
func NewServer(opts ...Option) *Server {
s := &Server{Port: 8080, Timeout: 30}
for _, o := range opts { o(s) }
return s
}
func main() {
fmt.Printf("%+v\n", *NewServer())
fmt.Printf("%+v\n", *NewServer(WithPort(9000)))
}Geçersiz Kılınana Kadar Varsayılanlar Kazanır
Seçenek olmadan çağırmak varsayılanları verir; bir seçenek yalnızca dokunduğu alanı değiştirir. Her iki yaklaşımın da en iyi yönleri.
Uygulama Sonrası Doğrulama
Seçenekleri uyguladıktan sonra son yapılandırmayı doğrulayın ve geçersizse bir hata döndürün. Oluşturucunun (*T, error) döndürmesini sağlayın.
package main
import (
"errors"
"fmt"
)
type Server struct{ Port int }
type Option func(*Server)
func WithPort(p int) Option { return func(s *Server) { s.Port = p } }
func NewServer(opts ...Option) (*Server, error) {
s := &Server{Port: 8080}
for _, o := range opts { o(s) }
if s.Port < 1 || s.Port > 65535 {
return nil, errors.New("invalid port")
}
return s, nil
}
func main() {
_, err := NewServer(WithPort(99999))
fmt.Println(err)
}Seçeneklerin İçinde Doğrulama
Alternatif olarak seçeneklerin kendisi bir hata döndürebilir. Option türü func(*Config) error hâline gelir.
package main
import (
"errors"
"fmt"
)
type Server struct{ Port int }
type Option func(*Server) error
func WithPort(p int) Option {
return func(s *Server) error {
if p < 1 {
return errors.New("port must be positive")
}
s.Port = p
return nil
}
}
func NewServer(opts ...Option) (*Server, error) {
s := &Server{Port: 8080}
for _, o := range opts {
if err := o(s); err != nil {
return nil, err
}
}
return s, nil
}
func main() {
_, err := NewServer(WithPort(-1))
fmt.Println(err)
}Hangi Doğrulama Tarzı
Ayar başına denetimler için seçeneklerin içinde doğrulama yapın; alanlar arası kurallar için uygulamadan sonra doğrulayın (örneğin TLS bir sertifika yolu gerektirir). Çoğu zaman ikisini de kullanırsınız.
Varsayılanları Belgeleme
Kullanıcıların bir seçeneği atladıklarında ne elde edeceklerini bilmeleri için her varsayılanı her zaman oluşturucunun belge açıklamasında belirtin.
Gerekli ve İsteğe Bağlı Değerler
Gerçekten gerekli değerleri konumsal parametreler olarak tutun; seçenekleri gerçekten isteğe bağlı değerler için ayırın. Gerekli verileri bir seçeneğin arkasına gizlemeyin.
package main
import "fmt"
type Client struct {
BaseURL string
Retries int
}
type Option func(*Client)
func WithRetries(n int) Option { return func(c *Client) { c.Retries = n } }
func NewClient(baseURL string, opts ...Option) *Client {
c := &Client{BaseURL: baseURL, Retries: 3}
for _, o := range opts { o(c) }
return c
}
func main() {
fmt.Printf("%+v\n", *NewClient("https://api"))
}Seçenekleri Birleştirme
Yaygın yapılandırmalar için birkaç seçeneği tek bir hazır ayarda birleştirebilirsiniz.
package main
import "fmt"
type Server struct{ Port, Timeout int }
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 Production() Option {
return func(s *Server) {
WithPort(443)(s)
WithTimeout(60)(s)
}
}
func NewServer(opts ...Option) *Server {
s := &Server{Port: 8080, Timeout: 30}
for _, o := range opts { o(s) }
return s
}
func main() {
fmt.Printf("%+v\n", *NewServer(Production()))
}En İyi Uygulamalar
- Varsayılanlarla başlayın, ardından seçenekleri uygulayın
- Alanlar arası kurallar için uygulamadan sonra doğrulayın
- Gerekli değerleri konumsal tutun
- Her varsayılanı belgeleyin
Eksiksiz ve Sağlam Bir API
Varsayılanları, seçenekleri ve doğrulamayı birleştirmek; esnek, güvenli, kendini açıklayan ve genişletilmesi kolay bir oluşturucu sağlar.
Hızlı Denetim
Varsayılanlar ve doğrulama bilginizi sınayın.
Özet
İşlevsel seçenekler kalıbını tamamladınız.
- Seçenekleri uygulamadan önce varsayılanları belirleyin
- Uygulamadan sonra veya alan başına denetimler için seçeneklerin içinde doğrulayın
- Gerekli değerleri konumsal tutun
- Seçenekleri hazır ayarlarda birleştirin ve varsayılanları belgeleyin
Sıkça Sorulan Sorular
“Varsayılanlar ve Doğrulama” dersi ücretsiz mi?
Evet — “Varsayılanlar ve Doğrulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Varsayılanlar ve Doğrulama” dersinde ne öğreneceğim?
Makul varsayılanlar belirleyin Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Varsayılanlar ve Doğrulama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Çok Sayıda Parametrenin Sorunu
- Seçenek İşlevleri
- Esnek API Oluşturma
- Varsayılanlar ve Doğrulama