帮我检查代码。氦是我最喜欢的项目,用歌朗写的。氦是一个小型的、简单的、模块化的构造函数,带有一些预先构建的组件.
https://github.com/im-kulikov/helium
如何使用它的简单示例
package main
import (
"context"
"github.com/davecgh/go-spew/spew"
"github.com/im-kulikov/helium"
"github.com/im-kulikov/helium/grace"
"github.com/im-kulikov/helium/logger"
"github.com/im-kulikov/helium/module"
"github.com/im-kulikov/helium/settings"
"github.com/spf13/viper"
)
var mod = module.New(newApp).
Append(
settings.Module,
logger.Module,
grace.Module)
// App struct
type App struct {
v *viper.Viper
}
func newApp(v *viper.Viper) helium.App {
return &App{v: v}
}
// Run application
func (a App) Run(ctx context.Context) error {
spew.Dump(a.v.AllSettings())
return nil
}
func main() {
h, err := helium.New(&helium.Settings{
Prefix: "demo",
Name: "demo",
BuildTime: "now",
BuildVersion: "dev",
}, mod)
helium.Catch(err)
helium.Catch(h.Run())
}发布于 2019-02-27 23:58:45
一些细节;在Run中:
// Run application
func (a App) Run(ctx context.Context) error {
spew.Dump(a.v.AllSettings())
return nil
}error将始终为空。根据去。;
func Dump(a ...interface{})
Dump什么也不回。因此,您应该能够从您的签名中删除error,或者b.-在a.v上做一些明智的检查,例如,这些元素不是nil/等等。
https://codereview.stackexchange.com/questions/213915
复制相似问题