[英]Problems with Goland's Debugger
我在Golang中有一个奇怪的错误。
操作系统:Linux Ubuntu 18.04。
CPU:具有64位支持的AMD。
IDE是Goland 2018.1.5。
Go版本为1.10.1。
编译器设置为:“任何”。
我已经尝试了'gc'和'gccgo'编译器。 结果是一样的。
在下面的程序中,调试器显示了奇怪的事情。 “ aUnion”变量内部带有“ John”,但是其中具有Union类型的“ aRecord”变量内部没有“ John”。
如果我“ fmt.Printf”他们,他们都在那里,但调试器显示“ aRecord”中没有约翰。 那是调试器的错误吗?
该程序非常简单。 只是嵌套结构作为指针传递。
// 33.go.
package main
import "fmt"
type Person struct {
Name string
Age int
}
type GroupOfPeople struct {
Name string
People []*Person
}
type Union struct {
ID int
Group *GroupOfPeople
}
type Record struct {
UnionField *Union
Type int
}
func main() {
var aPerson *Person
var people []*Person
var aGroup *GroupOfPeople
var aUnion *Union
var aRecord *Record
aPerson = &Person{
Name: "John",
Age: 10,
}
people = []*Person{aPerson}
aGroup = &GroupOfPeople{
Name: "A Group",
People: people,
}
aUnion = &Union{
ID: 123,
Group: aGroup,
} // John is inside 'aUnion'.
aRecord = &Record{
UnionField: aUnion,
Type: 666,
}
// John is NOT inside 'aRecord'.
// WHY ?!
fmt.Printf("aUnion: %+v.\r\n", aUnion.Group.People[0])
fmt.Printf("aRecord: %+v.\r\n", aRecord.UnionField.Group.People[0])
}
谢谢你的帮助!
这是GoLand在运行时如何处理这些变量的值嵌套的问题。
我创建此问题来跟踪和修复它。
同时,您可以使用“监视”功能来监视“ aRecord.UnionField.Group.People”作为示例,然后它将正确显示这些值。 抱歉给你带来不便。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.