SOLID di Go
1. Single Responsibility Principle (SRP)
// ❌ Melanggar SRP: User struct menangani data & validasi
type User struct {
Name string
Email string
}
func (u *User) Save() error {
// Logika simpan ke database
return nil
}
func (u *User) ValidateEmail() bool {
// Logika validasi email
return strings.Contains(u.Email, "@")
}
// ✅ Memenuhi SRP: Pemisahan tanggung jawab
type User struct {
Name string
Email string
}
type UserRepository struct{} // Tanggung jawab: akses data
func (r *UserRepository) Save(u *User) error { /* ... */ }
type UserValidator struct{} // Tanggung jawab: validasi
func (v *UserValidator) ValidateEmail(u *User) bool { /* ... */ }2. Open/Closed Principle (OCP)
3. Liskov Substitution Principle (LSP)
Analogi sederhana
Contoh di Golang
Inti LSP
4. Interface Segregation Principle (ISP)
5. Dependency Inversion Principle (DIP)
Kesimpulan: Manfaat SOLID di Go
Last updated