Avatar ·

Go中的构造函数:如何正确初始化结构体?

大家好!我刚从Java和C#开始学习Go,对构造函数有些困惑。 在Java中,我习惯这样写: ```java public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } } ``` 在Go中,我发现没有`class`关键字,也没有显式的构造函数。我尝试这样做: ```go type User struct { name string age int } // 尝试1:直接用相同名字的函数 func User(name string, age int) User { return User{name: name, age: age} } // 错误:User redeclared in this block // 尝试2:结构体的方法 func (u User) User(name string, age int) User { return User{name: name, age: age} } // 也不行 ``` 我陷入了困境。如何正确初始化结构体并进行字段验证?例如,我希望年龄不能为负,名字不能为空。在Java中,我会在构造函数里做这些检查。