• Hm, at least the handling of interface definitions seems very unidiomatic to me, specifically implementation packages also containing the interface definitions. At least those interfaces are not returned, but structs instead.

    Usage of the internal/ package would make sense too. All in all this seems as it would benefit from some go specific patterns.

    Options would be nice and i still do not understand the benefit of build tag based config compared to env or flag based approaches.