2 回答
TA贡献1828条经验 获得超3个赞
在主目录下创建另一个包,将其命名types
为任何您想要的名称。就像下面这样:
将您的structure对象移动到types.go
package types
type Configuration struct {
ApiPort string
DBHost string
DBPort string
DBUser string
DBPassword string
DBName string
Info string
}
main.go现在您可以从您的和访问它dbapi/test.go。
main.go:
package main
import "... .../code/types"
func handlerTest(w http.ResponseWriter, r *http.Request) {
log.Println("INFO: /test was requested...")
dbapi.Test(&AppConfig)
}
func main() {
http.HandleFunc("/test", handlerTest)
AppConfig = ReadConfig()
log.Fatal(http.ListenAndServe(AppConfig.ApiPort, nil))
}
var AppConfig = types.Configuration{}
func ReadConfig() types.Configuration {
err := gonfig.GetConf("./config.development.json", &AppConfig)
if err != nil {
fmt.Println("ERROR: Config konnte nicht geladen werden: ", err.Error())
}
return AppConfig
}
dbapi.go:
package dbapi
import "... .../code/types"
func Test (w http.ResponseWriter, Appconfig *types.Configuration) error {
fmt.Println("Test: " + Appconfig.DBUser)
}
TA贡献1824条经验 获得超5个赞
AppConfig 位于您已在主包中声明的配置结构类型的测试函数上。由于 go 不支持循环依赖,因此您无法将 Configuration 结构导入 dbapi 包中以在其中使用它。因此,我将从主包中移动 Configuration 结构并在 dbapi 包中声明它。
package dbapi
import (...)
type Configuration struct {
ApiPort string
DBHost string
DBPort string
DBUser string
DBPassword string
DBName string
Info string
}
func Test (w http.ResponseWriter, Appconfig *Configuration) error {
fmt.Println("Test: " + Appconfig.DBUser)
}
然后,您可以通过从 dbapi 包导入来使用 main 中的 Configuration 结构。
var AppConfig = dbapi.Configuration{}
所以,你的主包看起来像这样:
package main
import(
...
"github.com/wyrdnixx/go-server/src/go-server/dbapi"
)
func handlerTest(w http.ResponseWriter, r *http.Request) {
log.Println("INFO: /test was requested...")
dbapi.Test(&AppConfig)
}
func main() {
http.HandleFunc("/test", handlerTest)
AppConfig = ReadConfig()
log.Fatal(http.ListenAndServe(AppConfig.ApiPort, nil))
}
var AppConfig = dbapi.Configuration{}
func ReadConfig() dbapi.Configuration {
err := gonfig.GetConf("./config.development.json", &AppConfig)
if err != nil {
fmt.Println("ERROR: Config konnte nicht geladen werden: ", err.Error())
}
return dbapi.AppConfig
}
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报