Go语言面向对象编程:初始化Struct的几种方式

2023年 7月 11日 33.5k 0

面向对象编程语言最基础的概念就是类(class),不过Go语言并没有类的概念,所以使用Go语言开发时,我们一般会用struct(结构体)来模拟面向对象中的类。

类一般是通过构造方法(constructors)来初始化类的实例(对象)中的属性,不过Gostruct并没有构造方法这种机制,那要怎么样初始化struct类型的实例呢?

下面我们来介绍几种创建struct类型变量的方法。

字面量

创建并初始化一个struct变量最简单直接的方式就是使用struct字面量:

//app/school.go
package school

type Student struct {
 ID    int
 Name  string
 Score int
 Grade string
}

//main.go
package main
func main() {
 s := &Student{
  ID:    1,
  Name:  "小明",
  Score: 90,
  Grade: "高中二班",
 }
}

不过有时候我们只是需要一个临时struct类型的话,可以使用匿名struct

func main() {

 s := struct {
  ID    int
  Name  string
  Score int
  Grade string
 }{
  ID: 1, 
        Name: "小明",
        Score: 90,
        Grade: "高中二年级",
 }
}

使用内置new函数

除了字面量外,使用Go内置的new函数也可以创建一个struct变量,不过这种方式需要自己为struct的每个字段赋初始值:

func main(){
  s := new(Student)
  s.ID = 1
  s.Name = "小明"
  s.Score = 90
  s.Grade = "高中二班"
}

构造函数

前面我们说过Go语言的struct没有构造函数,但是我们可以自定义函数来初始化struct,自定义函数的好处在于:

  • 可以达到复用的目的。
  • 可以起到封装的效果。
  • 可以校验初始化值是否在允许的范围内。

一般我们自定义的构造函数都以New为前缀,比如:

package school

type student struct {
 ID    int
 Name  string
 Score int
 Grade string
}

func NewStudent(ID int, Name string,Score int Grade string) *Student {
    if ID 

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论