我想枚举我的 Go 程序中的行星。每个行星都包含一个通用名称(例如:“金星”)和与太阳的天文单位距离(例如:0.722)
所以我写了这段代码:
type planet struct {
commonName string
distanceFromTheSunInAU float64
}
const(
venus planet = planet{"Venus", 0.387} // This is line 11
mercury planet = planet{"Mercury", 0.722}
earth planet = planet{"Eath", 1.0}
mars planet = planet{"Mars", 1.52}
...
)
Run Code Online (Sandbox Code Playgroud)
但是 Go 不让我编译这个,并给了我这个错误:
# command-line-arguments
./Planets.go:11: const initializer planet literal is not a constant
./Planets.go:12: const initializer planet literal is not a constant
./Planets.go:13: const initializer planet literal is not a constant
./Planets.go:14: const initializer planet literal is not …Run Code Online (Sandbox Code Playgroud) 在尝试向使用&运算符获得的地址添加偏移量时,我遇到了一个非常奇怪的行为。因此,当我尝试向该地址添加任何数字时,结果是该地址加上我的数字乘以0xE0(224)。
这些是 Visual Studio 中监视列表的屏幕截图。每个截图的第一行是我的对象地址的访问,这是正确的。第二行是相同的访问,但我们向它添加了变量偏移量。第三行只是偏移量本身。
如您所见,第一个屏幕截图上的一切都很好。但是在第二个上,加法是0xE0( 0xE38-0xD58=0x0E0) 而不是 1 应该是。在最后一个屏幕截图中,添加的0x1C0是2*0xE0.
在第二行,我希望0x00000255ef9bed58在第一个屏幕截图、0x00000255ef9bed59第二个屏幕截图和0x00000255ef9bed5a最后一个屏幕截图中看到。