因为Java的构造函数是不需要返回值的,所以一般是参数较多的构造函数调用参数较少的构造函数,然后继续赋值。
比如:
public Student(String name){ this.name = name ; this.age = 10 ; } public Student(String name , int age ){ this(name) ; this.age = age ; }
而Go语言需要返回值,所以经常是参数较少的调用参数较多的构造函数,在调用时传入一个默认值。
所以代码可能是这样:
func NewStudentWithAge(name string , age int) *Student{ return &Student{name :name,age :age } ; } func NewStudent(name string ) *Student{ return NewStudentWithAge(name , 10); }
Object-C也是这样的。如果用C++时,自己也写一些类似newStudent这样的静态函数来调用构造函数,也是和Go一样的。
有疑问加站长微信联系(非本文作者)