golang中的指针和调试

son*_*ags 1 go

我陷入困境,无法弄清楚我搞砸了什么.最简单的解释方式可能是一些最小的例子:http://play.golang.org/p/14lbOBsCCo

我想通过它的指针修改结构的值,但最终修改了一些内存,而不是我想要的部分.第92行是我的问题所在.

你会如何调试这样的情况(工具等),以及如何获得broker.Port设置?

感谢您的提示/建议!

Jim*_*imB 6

你并没有在整个过程中使用指针.从类型的注册表开始:

type Registry []*Broker
Run Code Online (Sandbox Code Playgroud)

并从那里工作

工作实例

至于调试技巧,这是我的过程:

  • 价值没有改变,所以有些东西被价值所复制
  • 请注意,Registry是类型[]Broker,但我们想要修改Brokers,因此它需要是一个指针
  • 更改type Registry[]*Broker
  • 继续尝试编译,让编译器告诉我每个地方我们正在使用一个值,我们需要一个指针(woohoo快速编译时和静态类型)