9-Go语言基础-结构体(struct)

简介

结构体是一种聚合类型,由0个或者多个任意类型的值聚合的实体,每个值称为结构体的成员。
结构体的成员首字母大小写也遵循可导出的规则。首字母大写的成员可导出。
结构体一般和json绑定使用,结构体成员首字母大写则对json可见。
.操作可以获取结构体的成员。
结构体是值类型。
结构体的零值是每个成员对应类型的零值
没有任何成员的结构体是空结构体:struct。它的大小为0,在编程中有很大的价值。
我在使用map模拟set的时候,会把空结构体作为value:s:=make(map[string]struct{})

使用

  1. 结构体字面量
    字面量推荐写出成员名字和对应值得键值对,防止以后成员顺序变更导致代码出错。
    不显式赋值的成员是默认零值。
package main
import (
	"fmt"

)

func main() {
	type Person struct{
		Name string
		Age int
	}
	var myself=Person{
		Name:"wz",
		Age:18,//另起一行的时候记得这个,必须加
	}

	fmt.Println("myself:",myself)//myself: {wz 18}
	fmt.Printf("myself:%+v",myself)//myself:{Name:wz Age:18}
}
  1. 结构体通常以指针的方式处理
var myself =&Person{}
  1. 结构体可以做相等比较,所有成员都相等才会==
  2. 结构体嵌入
package main
import (
	"fmt"

)

func main() {
	
	type Company struct{
		CompanyName string
		CompanyAddress string
	}
	type Person struct{
		MyCompany Company
		Name string
		Age int
	}
	var myself=Person{
		Name:"wz",
		Age:18,//另起一行的时候记得这个,必须加
		MyCompany:Company{
			Name:"我的公司",
			Address:"北京",
		},
	}

	fmt.Println("myself.MyCompany.Name:",myself.MyCompany.Name)//myself.MyCompany.Name: 我的公司
	fmt.Printf("myself:%+v",myself)//myself:{MyCompany:{Name:我的公司 Address:北京} Name:wz Age:18}
}
  1. 结构体匿名成员
    匿名成员不支持显式成员名字的字面量赋值,但是可以直接字面量赋值,可以当做根成员访问到。
type Company struct{
		CompanyName string
		CompanyAddress string
	}
type Person struct{
		Company
		Name string
		Age int
	}
var myself=&Person {}
myself.CompanyName //不要成员名称重复
  1. json和结构体
    encoding/json 包可以使用。
    具体的使用方法,在连接mysql使用gorm第三方库的时候可以再进一步的分析。
发布了264 篇原创文章 · 获赞 23 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Edu_enth/article/details/104001032