为了账号安全,请及时绑定邮箱和手机立即绑定

Golang在全局变量中设置变量与函数中的结构

Golang在全局变量中设置变量与函数中的结构

Go
临摹微笑 2022-06-13 10:47:19
我是 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 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

如果要修改receiver( Configuration),setSpecialValueTypes()它必须是一个指针receiver。无法使用按值复制的值接收器进行操作,因此任何修改都将是该副本的本地修改。请参阅A Tour of Go的这一部分。

func (c *Configuration) setSpecialValueTypes() error { ...


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信