第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將結(jié)構(gòu)類型傳遞給模塊函數(shù)?

如何將結(jié)構(gòu)類型傳遞給模塊函數(shù)?

Go
回首憶惘然 2023-07-17 14:31:18
我只是玩了一下 Go 來學(xué)習(xí)如何處理。我有一個(gè)主要的圍棋程序。我為數(shù)據(jù)庫模塊創(chuàng)建了一個(gè)子文件夾,因?yàn)槲蚁胍獔?zhí)行數(shù)據(jù)庫操作。對于參數(shù),我有一個(gè)帶有憑據(jù)等的結(jié)構(gòu)類型。如何將結(jié)構(gòu)傳遞給模塊?我想要配置結(jié)構(gòu)中所需的所有配置和全局變量,并在需要時(shí)將其傳遞給模塊。這是實(shí)現(xiàn)目標(biāo)的好方法嗎?謝謝您的幫助。./main.go:package mainimport (    //...    "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 dbapiimport (    // ...)func Test (w http.ResponseWriter, Appconfig /* ?!? */) error {    fmt.Println("Test: " + Appconfig.DBUser)}
查看完整描述

2 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

在主目錄下創(chuàng)建另一個(gè)包,將其命名types為任何您想要的名稱。就像下面這樣:

http://img1.sycdn.imooc.com//64b4e05c0001761701710131.jpg

將您的structure對象移動(dòng)到types.go


package types


type Configuration struct {

    ApiPort    string

    DBHost     string

    DBPort     string

    DBUser     string

    DBPassword string

    DBName     string

    Info       string

}

main.go現(xiàn)在您可以從您的和訪問它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)

}


查看完整回答
反對 回復(fù) 2023-07-17
?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

AppConfig 位于您已在主包中聲明的配置結(jié)構(gòu)類型的測試函數(shù)上。由于 go 不支持循環(huán)依賴,因此您無法將 Configuration 結(jié)構(gòu)導(dǎo)入 dbapi 包中以在其中使用它。因此,我將從主包中移動(dòng) Configuration 結(jié)構(gòu)并在 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 包導(dǎo)入來使用 main 中的 Configuration 結(jié)構(gòu)。


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

}


查看完整回答
反對 回復(fù) 2023-07-17
  • 2 回答
  • 0 關(guān)注
  • 175 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號