gpt4 book ai didi

go - 如何将结构类型传递给模块函数?

转载 作者:IT王子 更新时间:2023-10-29 02:18:32 26 4
gpt4 key购买 nike

我只是稍微玩了一下 Go 来学习处理。

我有一个主程序。我为数据库模块创建了一个子文件夹,因为我想进行数据库操作。

对于参数,我有一个带有凭据等的结构类型。如何将结构传递给模块?

我想要配置结构中所需的所有配置和全局变量,并在需要时将其传递给模块。

这是实现目标的好方法吗?感谢您的帮助。

./main.go:

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))
}

type Configuration struct {
ApiPort string
DBHost string
DBPort string
DBUser string
DBPassword string
DBName string
Info string
}

var AppConfig = Configuration{}

func ReadConfig() Configuration {

err := gonfig.GetConf("./config.development.json", &AppConfig)
if err != nil {
fmt.Println("ERROR: Config konnte nicht geladen werden: ", err.Error())
}
return AppConfig
}

./dbapi/test.go:

package dbapi

import (
// ...
)

func Test (w http.ResponseWriter, Appconfig /* ?!? */) error {
fmt.Println("Test: " + Appconfig.DBUser)
}

最佳答案

在主目录下创建另一个包,将其命名为 types 或任何你想要的。像下面这样:

enter image description here

将您的 structure 对象移动到 types.go

package types

type Configuration struct {
ApiPort string
DBHost string
DBPort string
DBUser string
DBPassword string
DBName string
Info string
}

现在您可以从 main.godbapi/test.go 访问它。

ma​​in.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)
}

关于go - 如何将结构类型传递给模块函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57645059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com