Go语言中结构体如何使用

56次阅读
没有评论

共计 2418 个字符,预计需要花费 7 分钟才能阅读完成。

本篇文章为大家展示了 Go 语言中结构体如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

结构体
Go 语言中的基本数据类型可以表示一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时,这时候基本数据类型就无法满足需求了。
Go 语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体(struct)。
我们可以通过 struct 来定义自己的类型了。
Go 语言中通过 struct 来实现面向对象。
2.1 结构体的定义
使用 type 和 struct 关键字来定义结构体,具体代码格式如下:

type 类型名 struct {
  字段名 字段类型
  字段名 字段类型
 …
}

其中:
类型名:标识自定义结构体的名称,在同一个包内不能重复。
字段名:表示结构体字段名。结构体中的字段名必须唯一。
字段类型:表示结构体字段的具体类型。
举个例子,我们定义一个 Person 结构体,代码如下:
type Person struct {
 name string
 city string
 age int8
}

同样类型的字段可以卸载一行
type Person struct {
 name,city string
 age int8
}

这样我们就拥有了一个 Person 的自定义类型,它有 name,city,age 三个字段,分别表示姓名,城市和年龄。
这样我们就能使用 Person 结构体存储人的信息了。

语言内置的数据类型是用来描述一个值得,结构体是用来描述一组值的。
比如一个人有名字,年龄和居住城市等,本质上是一种聚合型的数据类型。
2.2 结构体实例化
只有当结构体实例化时,才会真正的分配内存。即必须实例化后才能使用结构体的字段。
结构体本身也是一种类型,我们可以像声明内置类型一样使用 var 关键字声明结构体类型。

var 结构体实例 结构体类型
2.2.1 结构体基本实例化
通过 . 来访问结构体的字段,例如 person1.name 和 person1.age

package mainimport fmt type Person struct {   name,city string    age int8}func main() {    var person1 Person    person1.name= vita    person1.city= ShangHai    person1.age=27    fmt.Printf( p1=%v\n ,person1)    fmt.Printf(p1=%#v\n ,person1)}结果:p1={vita ShangHai 27}p1=main.Person{name: vita , city: ShangHai , age:27}Process finished with exit code 0

2.2.2 匿名结构体
在定义一些临时数据结构时,可以使用匿名结构体。

package mainimport fmt func main() {    var person2 struct{name string;age int}    person2.name= vita    person2.age=27    fmt.Printf(p1=%v\n ,person2)    fmt.Printf(p1=%#v\n ,person2)}结果:p1={vita 27}p1=struct {name string; age int}{name: vita , age:27}Process finished with exit code 0

2.2.3 创建指针类型结构体
我们还可以通过 new 关键字对结构体进行实例化,得到的是结构体的地址。
package main

import fmt
type Person struct {
 name string
 city string
 age int
}
func main() {
 var person3 = new(Person)
 fmt.Printf(%T\n ,person3)
 fmt.Printf(p3=%#v\n ,person3)
 person3.name= vita
 person3.age=27
 fmt.Printf(p3=%v\n ,person3)
 fmt.Printf(p3=%#v\n ,person3)
}

结果:
*main.Person
p3= main.Person{name: , city: , age:0}
p3= {vita 27}
p3= main.Person{name: vita , city: , age:27}

Process finished with exit code 0

从打印结果可以看到,p3 是一个结构体指针。
Go 语言中支持对结构体指针直接使用 . 访问结构体成员。
2.2.4 取结构体的地址实例化
使用 对结构体进行取地址操作相当于对该结构体进行了一次 new 实例化操作。

package mainimport fmt type Person struct {   name string    city string    age int}func main() {    var person4 = Person{}    fmt.Printf(%T\n ,person4)    fmt.Printf(p4=%#v\n ,person4)    person4.name= vita    person4.age=27    fmt.Printf(p4=%v\n ,person4)    fmt.Printf(p4=%#v\n ,person4)}结果:*main.Personp4= main.Person{name: , city: , age:0}p4= {vita  27}p4= main.Person{name: vita , city: , age:27}Process finished with exit code 0

person4.name= vita 其实在底层是(* person4).name= vita , 这是 Go 语言帮我们实现的语法糖。

上述内容就是 Go 语言中结构体如何使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计2418字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)