Sobes.tech
Senior

[name] asked: have you applied Clean Architecture?

sobes.tech AI

Answer from AI

Yes, I have applied Clean Architecture in my projects using Go. This approach helps clearly separate responsibilities between application layers and facilitates testing and maintenance.

Specifically, I distinguished the following layers:

  • Entities — business logic and core models.
  • Use Cases (Interactors) — implementation of business processes.
  • Interface Adapters — adapters for interacting with external systems (HTTP, databases).
  • Frameworks & Drivers — concrete implementations, such as web servers, databases.

In Go, this is usually implemented through packages and interfaces, which makes it easy to replace implementations and write modular tests.

Example of a repository interface:

// domain/user.go
package domain

type User struct {
    ID   int
    Name string
}

type UserRepository interface {
    GetByID(id int) (*User, error)
    Save(user *User) error
}

Implementation of the interface in infrastructure:

// infrastructure/user_repo.go
package infrastructure

import "yourapp/domain"

type UserRepoDB struct {
    // db connection
}

func (r *UserRepoDB) GetByID(id int) (*domain.User, error) {
    // database access implementation
}

func (r *UserRepoDB) Save(user *domain.User) error {
    // saving to database
}

This approach improves the modularity and scalability of the application.