美文网首页
Go基础-006-04 复合数据类型 结构体

Go基础-006-04 复合数据类型 结构体

作者: 如逆水行舟不进则退 | 来源:发表于2020-02-23 18:00 被阅读0次

1.类型

结构体,用于描述一个整体结构的数据类型,在 Go 中,主要充当 OOP 的功能。
类型标识符:

struct {
  m1 m1T
  m2 m2T 
}

其中 struct 是结构体的关键字,m,就是 member 成员,也被称作 p,property 属性。
一个结构体,由多个成员 member 构成,每个 member 都是用户自定义的,因此该结构体,也是用户自定义的数据类型。 该自定义,指的是结构上的自定义。(与数组切片,仅仅定义元素类型和长度是不同的)。

一个结构体,体现的一个整体的数据的各个部分。例如:

struct {
  name string
  age int 
}

表示一个用户,具备了 name 和 age 两个属性。同时也意味着,只要是一个用户,就一 定要具备该两个属性。

在定义结构体时,往往会给结构体类型,起一个名字,称之为类型定义(别名),便于 之后方便的使用该结构体。类型的标识符(类型名)。
典型的结构体定义类型如下:

type Person struct {
   ID string
   Name string
   age int 
}

若没有起名字的结构体,称之为匿名结构体。 注意,以上语法,仅仅是定义了类型,而不是数据。仅仅是个结构。

2.字面量

语法: 类型标识符 {
成员的初始化
}
成员的初始化语法,有如下几个方案:

  • StructType {},使用成员的零值进行初始化
  • StructType {mValue1, mValue2 .. mValueN},依据成员声明顺序,将全部成员进行初始化。
  • StructType {mN:mValueN},对特定成员变量进行初始化,其他成员变量使用类型 零值。

代码示例:

type Person struct {
   ID string
   Name string
   age int 
}
//fmt.Println(Person)

fmt.Println(Person{})

fmt.Println(Person{"42007", "Hank", 42}) 

//fmt.Println(Person{"Hank", "42007",}) // too few values in Person literal
fmt.Println(Person{ID: "42008"})

3.结构体类型,类型名和类型数据概念区分

结构体类型,是对类型的描述 。
类型名,对该类型起的一个名字,便于访问。
类型数据,基于该类型,创建的数据。
类型 和 数据间的关系,相当于图纸和建筑物的关系。

4.成员访问 .

点运算符,用于完成对结构体数据成员的访问。
语法: 结构体.成员变量 (范围限定符)

代码示例:

type Person struct {
   ID string
   Name string
   age int 
}
p1 := Person{"42007", "Hank", 42} 
fmt.Println(p1.Name) // Hank

5.匿名结构体

没有为结构体类型起名字,直接去使用。
匿名结构体的使用,通常需要立即使用其成员声明语法,得到数据。

代码:

//匿名结构体
p := struct {
   ID string
   Name string
}{ 
  "007",
  "Hank", 
}

fmt.Println(p, p.Name) // {007 Hank} Hank

整体上的语法,就是匿名结构体的字面量语法。
若需要相同的结构,则还需使用匿名结构体语法,可见匿名结构体仅仅适用于临时使用一次的结构。
若结构体使用了多次,不建议使用匿名结构体,应该使用具名结构体(起名字的机构体)。

6.结构体是值类型

复制时,值会被拷贝!
代码:

p := struct {
   ID string
   Name string
}{ 
  "007",
  "Hank", 
}

p2 := p
p2.Name = "Firelinks" 
fmt.Println(p, p2)
// {007 Hank}  {007 Firelinks}

相关文章

  • Go基础-006-04 复合数据类型 结构体

    1.类型 结构体,用于描述一个整体结构的数据类型,在 Go 中,主要充当 OOP 的功能。类型标识符: 其中 st...

  • <>

    第六章重点: go语言数据类型:基础类型(数字,字符串,布尔类型),复合类型(数组,结构体),引用类型(指针,切片...

  • Go 专栏|复合数据类型:字典 map 和 结构体 struct

    原文链接: Go 专栏|复合数据类型:字典 map 和 结构体 struct[https://mp.weixin....

  • golang数据类型

    Go语言中有四种复合数据类型:数组,slice,map,结构体 数组和结构体都是聚合类型,长度固定。而slice和...

  • Go学习-数据类型

    Go数据类型 Go语言将数据类型分为四类 基础类型 复合类型 引用类型 接口类型 基础类型 数字 字符串 布尔 整...

  • Go Struct

    Go语言通过自定义结构的方式来实现新的类型,结构体是类型中带有成员的复合类型。 Go语言使用结构体和结构体成员来描...

  • 第三章 基础数据类型

    数据类型分类 基础类型 数字 字符串 布尔型 复合类型 数组 结构体 引用类型 指针 切片 字典 函数 通道 接口...

  • Go结构体、方法、接口

    1 结构体 Go语言中没有“类”的概念,也不支持像继承这种面向对象的概念。但是Go语言的结构体与“类”都是复合结构...

  • 结构体struct简单理解

    1.1 结构体的概念 结构体(struct):是一种复合数据类型,结构类型。 结构体,怎么理解?你可以把它想象成一...

  • C语言结构体

    什么是结构体 结构体是一种自定义的复合型的数据类型,可以由多种不同数据类型组成的数据集合. 结构体的声明 stru...

网友评论

      本文标题:Go基础-006-04 复合数据类型 结构体

      本文链接:https://www.haomeiwen.com/subject/zfxdqhtx.html