1 、什么是结构体
GO语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。

2、什么是实例化?

  • Go结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正分配内存。因此必须在定义结构体并实例化后才能使用结构体实例化就是根据结构体定义的格式创建一份与格式一致的內存区域。
  • 结构体实例之间的内存是完全独立的。
package main

import "fmt"

func main() {
    //实例化方式一
    var stu1 Student
    fmt.Printf("stu1=%T,%v,%q \n", stu1, stu1, stu1)
    stu1.name = "zs"
    stu1.age = 12
    stu1.sex = 1
    fmt.Printf("stu1=%T,%v,%q \n", stu1, stu1, stu1)
    //实例化方式二
    stu2 := Student{}
    stu2.name = "David"
    stu2.age = 33
    stu2.sex = 1
    fmt.Printf("stu2=%T,%v,%q \n", stu2, stu2, stu2)
    //实例化方式三
    stu3 := Student{
        name: "Josh",
        age:  28,
        sex:  1,
    }
    fmt.Printf("stu3=%T,%v,%q \n", stu3, stu3, stu3)
    //实例化四
    stu4 := Student{"Ruby", 30, 0}
    fmt.Printf("stu3=%T,%v,%q \n", stu4, stu4, stu4)
    //实例化五
    //使用内置函数new()对结构体进行实例化,结构体实例化后形成指针类型的结构体
    //·new内置函数会分配内存。第一个参数是类型,而不是值,返回的值是指向该类型新分配的零值的指针。该函数用于创建某个类型的指针。
    stu5 := new(Student)
    (*stu5).name = "Running"
    (*stu5).age = 31
    stu5.sex = 0                                     //语法糖的方式
    fmt.Printf("stu3=%T,%v,%q \n", stu5, stu5, stu5) //stu3=*main.Student,&{Running 31 0},&{"Running" '\x1f' '\x00'}

}

//结构体的定义
type Student struct {
    name string
    age  int
    sex  int8
}
View Code

相关文章:

  • 2018-01-08
  • 2021-06-24
  • 2021-08-27
  • 2022-12-23
  • 2021-12-13
  • 2021-10-10
  • 2021-05-31
  • 2021-10-29
猜你喜欢
  • 2022-12-23
  • 2022-01-24
  • 2022-03-09
  • 2021-06-10
相关资源
相似解决方案