前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang之旅16-嵌套结构体

Golang之旅16-嵌套结构体

作者头像
皮大大
发布2021-03-02 14:26:48
8150
发布2021-03-02 14:26:48
举报
文章被收录于专栏:机器学习/数据可视化

内容

  • 嵌套结构体
  • 不同的结构体之间的命名冲突
  • 结构体的继承实现

嵌套结构体

一个结构体中可以嵌套包含另一个结构体或结构体指针

代码语言:javascript
复制
package main

import "fmt"

type Address struct {
	Provice string  //字段名称  字段类型
	City string
}

type User struct {
	Name string
	Gender string
	Address Address   //类型是上面的Address类型
}

// 结构体的匿名字段
type Person struct{
    string 
    int
}

func main(){
	user1 := User{   //先定义User类型
		Name:    "皮皮虾",  
		Gender:  "name",
		Address: Address{   //再定义Address类型
			Provice: "广东",
			City: "深圳",
		},
	}
	fmt.Printf("user=%#v\n", user1)
}

字段名冲突

代码语言:javascript
复制
package main

import "fmt"

//字段名冲突问题

type Address struct {
	Province string
	City string
	CreateTime string
}

type Email struct{
	Account string
	CreateTime string
}


type Person struct {
	Name string
	Gender string
	Age int
	Address
	Email
}

func main(){
	p1 := Person{
		Name: "小明",
		Gender: "男",
		Age: 18,
		Address: Address{
			Province: "广东",
			City: "深圳",
			CreateTime: "2019-09-21",
		},
		Email: Email{
			Account:    "pipixia",
			CreateTime: "2018-08-09",
		},
	}
	fmt.Printf("%#v\n", p1)
	fmt.Println(p1.Address.CreateTime)   // 冲突的字段名,必须指明全部的类型名称进行访问
	fmt.Println(p1.Email.CreateTime)
}

结构体的继承

使用结构体能够实现继承功能

代码语言:javascript
复制
package main

import "fmt"

//结构体的继承

// Animal 动物:自定义一个类
type Animal struct{
	name string
}

// 定义一个方法move 传给Animal
// 接收者类型为*Animal,a是接收者变量
func (a *Animal) move(){
	fmt.Printf("%s can move\n", a.name)
}

// cat 类型
type Cat struct{
	Feet int8
	*Animal   // 通过嵌套匿名结构体实现继承,嵌套的是指针
}

func (d *Cat) miao() {
	fmt.Printf("%s can miao miao\n", d.name)
}

func main(){
	d1 := &Cat{  // 不要忘记取址符号
		Feet: 4,
		Animal: &Animal{
			name: "尤尔",
		},
	}
	d1.miao()
	d1.move()
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-9-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容
  • 嵌套结构体
  • 字段名冲突
  • 结构体的继承
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档