您现在的位置是:网站首页> 编程资料编程资料

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

2023-05-26 620人已围观

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

概述

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

语法

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

 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语言结构体的资料请关注其它相关文章!

-六神源码网