Go语言结构体实例化教程

中 定义完之后,并不能直接使用,因此此时还没有分配内存,因此,我们必须在定义完结构体,并实例话之后才可以使用结构体。

Golang 中结构体的实例化主要有三种方式,分别为:使用 定义的方式、使用 new 分配内存和使用 & 符号定义结构体。

变量定义方式

语法

var varName StructName

参数

参数 描述
var 定义结构体变量使用的关键字。
varName 结构体变量名。
StructName 结构体类型名。

说明

使用 var 关键字定义一个名为 StructName 的结构体变量 varName,后续我们就可以直接使用该变量。

new分配内存方式

语法

var varName = new(StructName)

说明

使用 new 关键字为变量 varName 分配内存。

&符号定义结构体

语法

var varName = &StructName{}

说明

使用 & 定义一个名为 varName 的结构体,使用 & 符号定义时,结构体名后面必须要加 {}。

案例

使用变量定义的方式

使用变量定义的方式,实例化一个名为 Student 的结构体

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //使用变量定义的方式,实例化一个名为 Student 的结构体 type Student struct { Name string Age int Score float64 } var stu Student stu.Name = "kongzi" stu.Age = 1998 stu.Score = 100.0 fmt.Println("Student =", stu) }

程序运行后,控制台输出如下:

04_golang结构体struct实例化.png

我们定义了一个结构体 Student,该结构体实例化有三个字段,一个是 类型的 Name,一个是 类型的 Age,还有一个 类型的 Score。

接着我们使用 var 实例化了一个 Student 结构体实例化类型的变量 stu,并给结构体变量 stu 的三个字段赋值,最后使用 打印结构体变量。

使用new分配内存的方式

使用 new 分配内存的方式,实例化一个名为 Student 的结构体

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //使用new分配内存的方式,实例化一个名为 Student 的结构体 type Student struct { Name string Age int Score float64 } var stu = new(Student) stu.Name = "kongzi" stu.Age = 1998 stu.Score = 100.0 fmt.Println("Student =", stu) }

程序运行后,控制台输出如下:

06_golang结构体struct实例化.png

我们定义了一个结构体 Student,接着,使用 new 分配内存的方式定义了一个结构体类型的变量 stu,并为该变量赋值,打印该变量。

使用&符号定义结构体

使用 & 符实例化结构体 Student

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //使用 & 符实例化结构体 Student type Student struct { Name string Age int Score float64 } var stu = &Student{} stu.Name = "kongzi" stu.Age = 1998 stu.Score = 100.0 fmt.Println("Student =", stu) }

程序运行后,控制台输出如下:

07_golang结构体struct初始化.png

我们定义了一个结构体 Student,接着,使用 & 符号初始化了一个结构体类型的变量 stu,并为该变量赋值,打印该变量。

Golang结构体实例化使用总结

Golang 中结构体的实例化主要有三种方式,分别为:使用变量定义的方式、使用 new 分配内存和使用 & 符号定义结构体。使用变量定义的方式:

var varName StructName

使用 new 分配内存的方式:

var varName = new(StructName)

使用 & 符号定义结构体:

var varName = &StructName{}