3 ms·
I hit this while building Adaptive, a proxy layer for LLM APIs. I needed to extend the OpenAI SDK / Anthropic SDK types with some extra fields. In most langua
by botirk 1y ago
I hit this while building Adaptive, a proxy layer for LLM APIs.
I needed to extend the OpenAI SDK / Anthropic SDK types with some extra fields.
In most languages, this is trivial.
In Go, it meant:
→ Embedding the original struct and hoping it wouldn’t break with the next SDK release.
→ Or recreating the types entirely, just to add fields.
That feels painful for something so basic.
But here’s the twist.
I also love how Go won’t let me build endless inheritance hierarchies or clever “extension” tricks that make a codebase unreadable.
The rigidity forces simplicity.
The problem is sometimes it becomes too simple.
When I want type-specific extensions, Go makes me fight the language instead of working with it.
That’s why I both hate and love Go’s type system.
It keeps my code clean — but makes it harder to grow.