🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] Go语言的结构体没有构造函数,我们可以自己实现。 例如,下方的代码就实现了一个 Student 的构造函数。 因为struct是 **值类型** ,如果结构体比较复杂的话,**值拷贝性能开销会比较大,所以该构造函数返回的是结构体指针类型,亦是推荐使用**。 ```go package main import "fmt" // Student 是学生的结构体 type Student struct { sid, age int name string course []string } // NewStudent 是学生结构体的构造函数 func NewStudent(sid, age int, name string, course []string) *Student { return &Student{ sid: sid, age: age, name: name, course: course, } } func main() { // 调用构造函数 s1 := NewStudent(1, 18, "jiaxzeng", []string{}) fmt.Printf("s1: %#v\n", s1) fmt.Printf("s1: %#v\n", *s1) } // 运行结果: // s1: &main.Student{sid:1, age:18, name:"jiaxzeng", course:[]string{}} // s1: main.Student{sid:1, age:18, name:"jiaxzeng", course:[]string{}} ```