SkillAgentSearch skills...

Gone

πŸš€ Gone - A Lightweight Dependency Injection Framework for Go | Tag-based Auto Injection | Supports Config Center/Lifecycle Management | Provides Rich Ecosystem Components and Scaffolding Tool

Install / Use

/learn @gone-io/Gone
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p> English&nbsp |&nbsp <a href="README_CN.md">δΈ­ζ–‡</a> </p>

license GoDoc Go Report Card codecov Build and Test Release Mentioned in Awesome Go

<img src="docs/assert/logo.png" width = "100" alt="logo" />

πŸš€ Gone - Lightweight Dependency Injection Framework for Go

πŸ’‘ Framework Introduction

Gone is a lightweight dependency injection framework based on Golang tags, implementing component dependency management through concise annotations. Here is a typical usage example (a struct embedded with gone.Flag, which we call Goner):

type Dep struct {
    gone.Flag
    Name string
}

type Component struct {
    gone.Flag
    dep *Dep        `gone:"*"` //Dependency injection
    log gone.Logger `gone:"*"` //Inject gone.Logger

    // Inject configuration, get value from environment variable GONE_NAME; 
    // if using components like goner/viper, values can be obtained from config 
    // files or config centers.
    // Reference documentation: https://github.com/gone-io/goner
    name string     `gone:"config:name"`
}

func (c *Component) Init() {
    c.log.Infof(c.dep.Name) //Use dependency
    c.log.Infof(c.name) //Use configuration
}

✨ Core Features

  • Comprehensive Dependency Injection Support
    • Struct field injection (supports private fields)
    • Function parameter injection (auto-matching by type)
    • Configuration parameter injection (supports environment variables, config centers and config files)
    • Third-party component injection (via Provider mechanism) πŸ‘‰ Detailed Documentation
  • Supports defining initialization methods, service start/stop methods and related lifecycle hook functions for Goners, enabling automated service management and custom operations.
  • Provides ecosystem goner components supporting configuration, logging, database, LLM, observability and more.
  • Provides scaffolding tool gonectl supporting project creation, component management, code generation, test mocking, compilation and running.

Architecture

<img src="docs/assert/architecture.png" width = "800" alt="architecture"/>

🏁 Quick Start

Environment Preparation

  1. Install required tools
go install github.com/gone-io/gonectl@latest
go install go.uber.org/mock/mockgen@latest

Create Project

gonectl create myproject
cd myproject

Run Project

go mod tidy
gonectl run ./cmd/server

More Documents

Release Notes

πŸ‘‰πŸ» https://github.com/gone-io/gone/releases

Contribution

If you find any bugs or have feature requests, feel free to submit an issue or submit a pull request.

Contact

If you have any questions, welcome to contact us through:

  • Github Discussions

  • Scan QR code to add WeChat, passcode: gone

    <img src="docs/assert/qr_dapeng.png" width = "250" alt="dapeng wx qr code"/>

License

gone is released under the MIT License, see LICENSE for details.

View on GitHub
GitHub Stars131
CategoryCustomer
Updated1mo ago
Forks8

Languages

Go

Security Score

100/100

Audited on Feb 26, 2026

No findings