golang go语音 之 结构体

一 结构体基础

Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。

 

#   go自定义类型 例如:

//类型定义   打印出是  NewInt 类型
type NewInt int

//类型别名  这个 仅仅是别名而已, 编译完成时不会有MyInt这个类型 
type MyInt = int

结构体实例化

只有当结构体实例化时,才会真正地分配内存。也就是必须实例化后才能使用结构体的字段。

结构体本身也是一种类型,我们可以像声明内置类型一样使用var关键字声明结构体类型。

代码示例

type person struct {
	name string
	city string
	age int8
}

func main() {
	var p1 person
	p1.name = "沙赫纳扎"
	p1.city = "北京"
	p1.age = 18
	fmt.Printf("p1=%v\n", p1)
	fmt.Println("p1=%#v\n", p1)
}

二 结构体 json 反引号

//父对象
type Human struct {
    Name   string  `json:"english_name"` //把struct编码成json字符串时,Name字段的key是english_name,而不是Name
    Age    int     `json:"-"`            //把struct编码成json字符串时,会忽略Age这个字段
    Weight float64 //`json:",string"` //编码成字符串,这个string选项只适用字符串,浮点型和整型数据
}

//子对象
type Student struct {
    Human
    Speciality string
    Hobby      []string
    Score      float64 `json:"total,omitempty"` //如果这个字段是空值,则不编码到JSON里面,否则用total为名字编码
    Secret     []byte  `json:",omitempty"`      //如果这个字段是空值,则不编码到JSON里面,否则用Secret为名字编码
    //是一个经过base64编码的字符串
}

版权声明:本文为CSDN博主「aa1215018028」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aa1215018028/article/details/82768636

你可能感兴趣的:(go语言,golang,json,开发语言)