Go核心编程-结构体[Struct]

一. 什么是结构体

  • 将一类事物的特性提取出来(比如猫类) 形成一个新的数据类型, 就是一个结构体
  • 通过这个结构体, 我们可以创建多个变量(实例/对象)
  • 事物可以是猫类,也可以是Person、Fish或者某个工具类

引入实际问题

Q:张老太养了两只猫猫一只名字叫小白,今年3岁, 白色
还有一只叫小花,今年100岁,花色
请编写一个程序 存储这两只猫咪

package main

import (
    "fmt"
)


func main() {

    // 1. 使用变量处理
    var cat1Name string = "小白"
    var cat1Age int = 3
    var cat1Color string = "白色"
    
    var cat2Name string = "小花"
    var cat2Age int = 100
    var cat2Color string = "花色"


    fmt.Println("cat:", cat1Name, cat1Age, cat1Color, cat2Name, cat2Age, cat2Color)

    // 2. 使用数组处理
    var catNames [2]string = [...]string{"小白", "小花"}
    var catAges [2]int = [...]int{3, 100}
    var catColors [2]string = [...]string{"白色", "花色"}

    fmt.Println(catNames)
    fmt.Println(catAges)
    fmt.Println(catColors)

}

现有技术的缺点

  • 使用变量或者数组来解决养猫的问题,不利于数据的管理和维护,因为名字, 年龄, 颜色都是属于一只猫的,但是这里是分开保存的
  • 如果我们希望对一只猫的属性(名字、年龄、颜色) 进行操作(绑定方法) 也不好处理
  • 这里我们可以使用结构体处理这类问题

定义一个Cat结构体, 将Cat的各个字段/属性信息, 放入Cat结构体进行管理

type Cat struct {
    Name string
    Age int
    Color string
    Hobby string 
}

main方法中使用结构体

// 5 使用结构体
// 5.2 创建一个Cat的变量
var cat1 Cat
cat1.Name = "小黑"
cat1.Age = 3
cat1.Color = "白色"
cat1.Hobby = "吃<。)#)))≦"
fmt.Println("cat1=", cat1)

fmt.Println("======= 猫咪的信息如下 =======")
fmt.Println("name=", cat1.Name)
fmt.Println("age=", cat1.Age)
fmt.Println("color=", cat1.Color)
fmt.Println("hobby=", cat1.Hobby)

从上面的结构体和结构体变量(实例)可以看出区别和联系

  • 结构体是自定义的数据类型,代表一类事物
  • 结构体变量(实例)是具体的,实际的,代表一个具体变量

你可能感兴趣的:(Go核心编程-结构体[Struct])