go mysql struct_Go 语言结构体(struct)

Go 语言结构体(struct)

Golang中的结构(struct)是一种用户定义的类型,允许将可能不同类型的项分组/组合成单个类型。任何现实世界中拥有一组属性/字段的实体都可以表示为结构。这个概念通常与面向对象编程中的类进行比较。它可以被称为不支持继承但支持组合的轻量级类。

例如,一个地址具有name,street,city,state,Pincode。如下所示,将这三个属性组合为一个结构Address是有意义的。

声明结构:type Address struct {

name string

street string

city string

state string

Pincode int

}

在上面,type关键字引入了一个新类型。其后是类型的名称(Address)和关键字struct,以说明我们正在定义结构。该结构包含花括号内各个字段的列表。每个字段都有一个名称和类型。

注意:我们还可以通过组合相同类型的各个字段来使它们紧凑,如下例所示:type Address struct {

name, street, city, state string

Pincode int

}

定义结构:声明结构的语法:var a Address

上面的代码创建一个Address类型的变量,默认情况下将其设置为零。对于结构,零表示所有字段均设置为其对应的零值。因此,字段name,street,city,state都设置为“”,而Pincode设置为0。

您还可以使用结构字面量来初始化结构类型的变量,如下所示:var a = Address{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}

注意:

始终以在结构中声明它们的顺序传递字段值。同样,您不能仅使用上述语法初始化字段的子集。

Go还支持名称:value语法,用于初始化结构(使用此语法时字段的顺序无关紧要)。而且,这仅允许您初始化字段的子集。所有未初始化的字段均设置为其相应的零值。

例如:var a = Address{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}

示例package main

import "fmt"

//定义结构类型

type Address struct {

Name    string

city    string

Pincode int

}

func main() {

//声明一个“struct”类型的变量

//初始化所有struct字段

//其值为零

var a Address

fmt.Println(a)

//声明和初始化

// struct使用结构文字

a1 := Address{"Akshay", "Dehradun", 3623572}

fmt.Println("Address1: ", a1)

//在命名字段时

//初始化一个结构

a2 := Address{Name: "Anikaa", city: "Ballia",Pincode: 277001}

fmt.Println("Address2: ", a2)

//未初始化的字段设置为

//它们对应的零值

a3 := Address{Name: "Delhi"}

fmt.Println("Address3: ", a3)

}

输出:{  0}

Address1:  {Akshay Dehradun 3623572}

Address2:  {Anikaa Ballia 277001}

Address3:  {Delhi  0}

如何访问结构的字段?

要访问结构的各个字段,您必须使用点(.)运算符。

示例package main

import "fmt"

//定义结构体

type Car struct {

Name, Model, Color string

WeightInKg         float64

}

func main() {

c := Car{Name: "Ferrari", Model: "GTC4", Color: "Red", WeightInKg: 1920}

//访问结构字段

//使用点运算符

fmt.Println("Car Name: ", c.Name)

fmt.Println("Car Color: ", c.Color)

//赋新值

//指向一个结构字段

c.Color = "Black"

//显示结果

fmt.Println("Car: ", c)

}

输出:Car Name:  Ferrari

Car Color:  Red

Car:  {Ferrari GTC4 Black 1920}

指向结构的指针

Golang中的指针是一个变量,用于存储另一个变量的内存地址。您还可以创建一个指向结构的指针,如以下示例所示:

示例// 指向结构体的指针

package main

import "fmt"

// 定义一个结构

type Employee struct {

firstName, lastName string

age, salary int

}

func main() {

//传递struct变量的地址

// emp8是指向Employee结构的指针

emp8 := &Employee{"Sam", "Anderson", 55, 6000}

//(* emp8).firstName是要访问的语法

// emp8结构的firstName字段

fmt.Println("First Name:", (*emp8).firstName)

fmt.Println("Age:", (*emp8).age)

}

输出:First Name: Sam

Age: 55

Golang为我们提供了使用emp8.firstName而不是显式解引用(* emp8).firstName来访问firstName字段的选项。 显示此示例如下:

示例//指向结构的指针

package main

import "fmt"

//定义一个结构

type Employee struct {

firstName, lastName string

age, salary         int

}

func main() {

//获取指向结构体的指针

emp8 := &Employee{"Sam", "Anderson", 55, 6000}

// emp8.firstName用于访问

//字段firstName

fmt.Println("First Name: ", emp8.firstName)

fmt.Println("Age: ", emp8.age)

}

输出:First Name:  Sam

Age:  55

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值