有如下的Java代码
```
class Vec
{
public final double x, y, z; // position, also color (r,g,b)
public static final Vec Zero = new Vec(0, 0, 0);
}
```
我使用GO的struct模拟上面的代码
```
type Vec struct {
x, y, z float64
Zero Vec = &Vec{0, 0, 0} //这样的实现不支持,该如何实现
}
```
但GO好像不支持在struct中编写这样的语句 Zero Vec = &Vec{0, 0, 0}, 请问该如何实现?
更多评论
类似这样子实现,看能不能满足你要求:
```go
package main
import "fmt"
type Vec struct {
x, y, z float64
Zero *Vec
}
func NewVec(x, y, z float64) *Vec {
return &Vec{
x: x,
y: y,
z: z,
Zero: &Vec{x: 0, y: 0, z: 0},
}
}
func main() {
v := NewVec(10, 2, 30)
fmt.Println(v)
}
```
#1
go不支持struct对象作为常量。
所以只能定义为变量:
```
var (
Zero = Vec{0, 0, 0}
)
```
或者通过一个包装函数获取:
```
func ZeroVec() Vec {
return Vec{0, 0, 0}
}
```
#2