编译以下代码时......
package camera
type camera struct {
position [3]float64
viewWidth int
viewHeight int
}
func (c camera) SwitchToCartesianThreeSpace(x, y int) [3]float64 { // LINE 9
var x3 float64 = 0 // view is set to the origin
var y3 float64 = float64(x) - (float64(c.viewWidth) / 2)
var z3 float64 = float64(-y) + (float64(c.viewHeight) / 2)
result := [3]float64{x3, y3, z3} // LINE 13
return result
}
......发生以下错误。
camera/camera.go:9: undefined: x
camera/camera.go:9: undefined: y
camera/camera.go:11: undefined: x
camera/camera.go:12: undefined: y
camera/camera.go:13: cannot use x3 (type float64) as type [3]float64 in array element
camera/camera.go:13: cannot use y3 (type float64) as type [3]float64 in array element
camera/camera.go:13: cannot use z3 (type float64) as type [3]float64 in array element
到目前为止,我已经编写了大量的Go代码,并且不明白为什么第9行的错误或第13行的错误正在发生!有谁能解释?
答案 0 :(得分:2)
隔离in a playgroud,它编译得很好,并且具有预期的输出:
c := camera{}
res := c.SwitchToCartesianThreeSpace(2, 3)
// res is [0 2 -3]
您需要尝试camera.go
仅包含 该代码,或检查camera.go
文件在current workspace中的适用方式。