我最近开始学习Go,当我决定将我的代码放在多个文件(main.go)中时,出现了一个问题。我经常需要的日常,缓存,配置,指标等常用的东西都没有在其他文件中可用,即使它属于相同的“包主”。我想根据来自config(viper包)的数据配置我的日志实例(logrus包)一次。这只是一个开始,我很快就会有一个数据库实例(?),缓存实例等等。
解决问题的最佳方法是什么,最佳Go练习是什么?我怎样才能遵循DRY原则?
如果我将初始日志设置放入“mylog”软件包然后将其导入每个软件包的每个文件中,那么会有多少个mylog实例?一个用于每个文件/包/? ?它有效吗?
Log and Config也相互依赖。我需要记录配置错误,我需要配置来配置日志。
UIGestureRecognizer.Token
main.go:
user@host:~/dev/go/src/helloworld$ go build && ./helloworld
# helloworld
./cache.go:10: undefined: Log
./cache.go:17: undefined: Log
cache.go:
package main
import (
"fmt"
"time"
"os"
"strconv"
"strings"
"github.com/julienschmidt/httprouter"
"crypto/hmac"
"crypto/sha256"
// "github.com/gin-gonic/gin"
"net"
"net/http"
Log "github.com/Sirupsen/logrus"
// "io/ioutil"
"encoding/json"
"encoding/hex"
"encoding/base64"
"golang.org/x/crypto/bcrypt"
"github.com/asaskevich/govalidator"
"gopkg.in/gomail.v2-unstable"
"github.com/spf13/viper"
)
.
.
.
答案 0 :(得分:3)
您需要将您使用的软件包添加到使用该软件包的每个文件的导入部分。所以在你的cache.go
中,写一下
import (
"github.com/bradfitz/gomemcache/memcache"
Log "github.com/Sirupsen/logrus"
// List all packages mentioned in cache.go.
)