Avatar ·

如何在Go中正确创建构造函数,如果语言中没有类和构造函数?

大家好!我刚从Python和Java开始学习Go,遇到了一个严重的障碍。Go没有传统意义上的类,也没有构造函数。那么如何创建具有复杂初始化逻辑的对象呢? 假设我想创建一个`User`结构体,包含`Name`、`Email`和`Age`字段。理想情况下,我希望在创建用户时验证email的有效性,年龄不能为负,名字不能为空。在Python中我会写`__init__`,在Java中我会写带检查的构造函数。那么在Go中该怎么做? 目前我是这样做的: ```go type User struct { Name string Email string Age int } func main() { u := User{ Name: "Alice", Email: "alice@example.com", Age: 30, } // 但这里没有检查!可以创建名字为空或年龄为-5的User。 fmt.Println(u) } ``` 我明白在Go中可以直接声明结构体并填充字段,但这不安全。需要某种函数来保证