package main

import (
"fmt"
"reflect"
)

/*

type :关键字之定义中新类型
struct : 结构体
结构体并非创建面向对象代码的方式,而是一种数据结构创造方式,旨在满足数据建模需求
允许:结构体套结构体,满足更复杂的数据结构
比较: 结构体比较 运算符 == ,是否相等 !=, 比较结构体首先比较他们类型和值是否相同,对结构体中的每个字段值和类型都会比较。
查询结构体是否相同,reflect.TypeOf()

理解公用、私有值,结构体中首字母大写可以导出,要导出结构体及其字段,结构体及其字段的名称都必须是以大写字母大头!!!
  重点:这里的公有和私有,其实就是面向对象中变量继承时的 公有属性和私有属性的意思。建议,目前所有结构体都首字母都大写。 



  1.使用new 来实例化结构体; m : = new(Movie) //Movie 是一个结构体

  2.区分指针引用和值引用,使用结构体是,明确指针引用和值引用的区别很重要。
    值引用赋值 比如 a:=b{name:"liu"} ,这样修改a.name="ls",不会影响到b.name,值引用是复制结构体,开辟一块新的内存空间
          a只是b的一个副本,而不是指向b的引用。