Go语言基础结构体用法及示例详解

Malak ·
更新时间:2024-09-21
· 1947 次阅读

目录

概述

语法

结构体定义的三种形式

第一种【基本的实例化】

第二种【指针类型的结构体】

第三种【取结构体的地址实例化,通过&的操作】

初始化结构体

键值对初始化结构体

值列表填充结构体

匿名结构体

访问结构体成员

结构体作为函数参数

 结构体指针

添加结构体方法

总结

示例

概述

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合

语法

定义结构体【标识自定义结构体的名称,在同一个包内不能重复】

type 结构名 struct { 字段1: 字段1的值, 字段2: 字段2的值, ...... }

例子

//学生 type Student struct { Name string //姓名 Age int //年龄 Sex bool //性别 true:男 false:女 } 结构体定义的三种形式 第一种【基本的实例化】 var stu Student 第二种【指针类型的结构体】 var stu *Student = new(Student) 第三种【取结构体的地址实例化,通过&的操作】 var stu *Student = &Student{} 初始化结构体 键值对初始化结构体

键值之间以:分隔;键值对之间以,分隔

变量名 := 结构体类型名{
    字段1: 字段1的值,
    字段2: 字段2的值,
    ......
}

例子

stu3 := Student{ Name: "李四", Age: 18} 值列表填充结构体

没有字段,按着序列,必须全部填充

变量名 := 结构体类型名{
    字段1的值,
    字段2的值,
    ......
}

stu4 := Student{ "王五", 18, true, } 匿名结构体

定义结构体时同时赋值

变量名 := struct{
    字段1: 字段类型1,
    字段2: 字段类型2,
    ......
}{
    // 字段值初始化
    字段1: 字段1的值,
    字段2: 字段2的值,
    ......
}

stu5 := struct { Name string Age int }{ Name: "王五", Age: 18, } 访问结构体成员

赋值、访问都使用"."点这个符号

结构体.字段

var stu Student stu.Name="张三" //赋值 stu.Age=18 stu.Sex=true fmt.Println(stu.Age) //访问 结构体作为函数参数 func 函数名([结构体变量、结构体指针变量]){} func printStudent(stu Student) {} func printStudent(stu *Student) {}  结构体指针

使用结构体指针访问结构体成员,使用 “.” 操作符。

var 变量名 *结构名 var stu1 *Student = new(Student) stu1.Name = "李四" stu1.Age = 20 stu1.Sex = false 添加结构体方法

给结构体添加方法,在func和方法名之间加一个括号,加入该结构体的指针引用【也可以是值引用】

func ([结构体名]) 方法名([参数列表])[返回值列表]{}

例子

var stu Student stu.Name = "张三" stu.Age = 18 stu.Sex = false //调用 stu.sayHi() //添加结构体方法 func (stu Student) sayHi() { fmt.Println(stu.Name, "Hi") } 总结

golang是非面向对象语言,也可以说go语言中的结构体类似java中的类,但是很明显缺少继承多态等等OO的特性

指针变量通过.访问结构体成员,如果是C或者C++一定要通过*访问,这是Go对它的一个优化

示例 package main import "fmt" //定义结构体【标识自定义结构体的名称,在同一个包内不能重复】 type Student struct { Name string Age int Sex bool } func main() { //struct定义的三种形式 var stu Student stu.Name = "张三" stu.Age = 18 stu.Sex = false fmt.Println(stu) var stu1 *Student = new(Student) stu1.Name = "李四" stu1.Age = 20 stu1.Sex = false fmt.Println(stu1) var stu2 *Student = &Student{} stu2.Name = "王五" stu2.Age = 55 stu2.Sex = true fmt.Println(stu2) //初始化结构体 stu3 := Student{ Name: "李四", Age: 18} fmt.Println(stu3) stu4 := Student{ "王五", 18, true, } fmt.Println(stu4) //匿名结构体 stu5 := struct { Name string Age int }{ Name: "王五", Age: 18, } fmt.Println(stu5) // printStudent(stu) printStudent(stu1) stu.sayHi() } //添加结构体方法 func (stu Student) sayHi() { fmt.Println(stu.Name, "Hi") } // func printStudent(stu Student) { // fmt.Println(stu.Name, stu.Age, stu.Sex) // } func printStudent(stu *Student) { fmt.Println(stu.Name, stu.Age, stu.Sex) }

以上就是Go语言基础结构体用法及示例详解的详细内容,更多关于Go语言结构体的资料请关注软件开发网其它相关文章!



go语言基础 GO 结构体 示例 go语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号