我是 Go 的新手,我不明白為什么該變量tc.Duration沒有被設置為全局變量的一部分Config.Core.Cron.Interval。我為測試添加了tc.x& tc.y,它們也沒有設置。他們當然在方法中這樣做,但我不明白為什么這沒有進入全局變量。為簡潔起見,我已經稍微減少了代碼,但我相信我仍然擁有所有相關的內容。var Config Configurationtype Configuration struct { Core CoreConfig}type CoreConfig struct { Cron CronConfig}type CronConfig struct{ Interval TimeConfig }type TimeConfig struct { String string Duration *time.Duration x *int y int}func (tc *TimeConfig) setDuration(errs *int) { if len(tc.String) > 0 { // var err error // d := time.Duration(0) z := 20 tc.x = &z tc.y = z if d, err := time.ParseDuration(tc.String); err != nil { logger.Error(err) *errs++ } else { tc.Duration = &d } spew.Dump(Config.Core.Cron.Interval) }}func (c Configuration) setSpecialValueTypes() error { var err error errs := 0 p := &errs // Cron c.Core.Cron.Interval.String = `15m` c.Core.Cron.Interval.setDuration(p) if errs > 0 { err = errors.New(`Errors occurred while setting special values`) } return err}
1 回答

函數(shù)式編程
TA貢獻1807條經驗 獲得超9個贊
如果要修改receiver( Configuration
),setSpecialValueTypes()
它必須是一個指針receiver。無法使用按值復制的值接收器進行操作,因此任何修改都將是該副本的本地修改。請參閱A Tour of Go的這一部分。
func (c *Configuration) setSpecialValueTypes() error { ...
- 1 回答
- 0 關注
- 155 瀏覽
添加回答
舉報
0/150
提交
取消