Is there a better dependency injection pattern in golang?


Given this code:

package main

import (

type datstr string

type Guy interface {
   SomeDumbGuy() string

func (d *datstr) SomeDumbGuy() string {
  return "some guy"

func someConsumer(g Guy) {
  fmt.Println("Hello, " + g.SomeDumbGuy())

func main() {
    var d datstr

Is the wiring of components together that’s done in main the right way to wire a dependency together? It seems like I’m over using this a bit in my code. Is there a common pattern better than this, or am I overthinking it?


The best practice is not to use a DI library. Go is meant to be a simple language that is easy to follow. A DI library/framework will abstract that away from you (and to some extent make DI magical).

Answered By – Zeeshan

Answer Checked By – Dawn Plyler (GoLangFix Volunteer)

Leave a Reply

Your email address will not be published.