Le projet libre IziDIC définit un conteneur d'injection de dépendances minimaliste pour les projets Go, inspiré du conteneur Pimple pour PHP.
Comme lui, il peut stocker deux types de données distincts :
- des paramètres : des données modifiables sans dépendances ;
- des services : des fonctions renvoyant un objet typé qui fournit une fonctionnalité, et pouvant dépendre d'autres services ou paramètres.
Sa caractéristique principale est que le stockage des définitions de services n'entraîne pas leur instanciation immédiate; cela permet de définir des services nécessitant d'autres services avant même que ces derniers ne soient eux-mêmes définis ("lazy loading").
Les paramètres ne sont pas limités aux types primitifs. Par exemple, la plupart des applications stockeront probablement un objet stdout ayant pour valeur os.Stdout io.Writer.
Contrairement à des solutions plus lourdes comme google/wire ou uber-go/dig, il fonctionne selon un processus explicite en une seule étape, sans recours à la réflexion ni à la génération de code, afin de garantir une visibilité totale sur l'ensemble du système.