ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

9.10Go之结构体之构造函数

2021-09-10 20:01:34  阅读:131  来源: 互联网

标签:string BlackCat Cat 体之 实例 Go 构造函数 结构


9.10Go之结构体之构造函数

构造函数的特点

  • Go语言的类型或结构体没有构造函数的功能

  • 可以使用结构体初始化的过程来模拟实现构造函数

多种方式创建和初始化结构体——模拟构造函数重载

本质:

  • 构造一个结构体,在多个函数当中实例化该结构体

示例代码:

需求:

  • 使用结构体描述猫的特性

  • 根据猫的颜色和名字描述

package main

/*
创建一个猫的结构体
*/
type Cat struct {
Color string
Name string
}

/*
实例化猫的名字的函数
*/
func NewCatName(name string) *Cat {
//返回值中构造结构体实例
return &Cat{
Name: name,
}
}

/*
实例化猫的颜色的函数
*/
func NewCatColor(color string) *Cat {
return &Cat{
Color: color,
}
}

带有父子关系的结构体的构造和初始化——模拟父级构造调用

本质:

  • 类似Java当中的父类、子类的关系。内嵌结构体。结构体相当于子类。内嵌的结构体相当于父类。

  • 实例化结构体可以使用内嵌结构体的成员

示例代码:

需求:

  • 创建一个黑猫结构体,内嵌猫结构体

  • 创建猫结构体,定义猫这种动物应有的行为(成员)

  • 构造基类实例

  • 构造子类实例

package main

/*
创建一个猫的基类
*/
type AnotherCat struct {
Color string
Name string
}

/*
创建一个黑猫的子类,内嵌基类
定义 BlackCat 结构,并嵌入了 Cat 结构体,BlackCat 拥有 Cat 的所有成员,实例化后可以自由访问 Cat 的所有成员。
*/
type BlackCat struct {
AnotherCat
}

/*
创建一个构造基类的函数
*/
func NewCat(color string) *AnotherCat {
//返回时实例化基类
return &AnotherCat{
Color: color,
}
}

/*
创建一个构造子类的函数
NewBlackCat() 使用 color 作为参数,构造返回 BlackCat 指针
*/
func NewBlackCat(name string) *BlackCat {
//返回时实例化子类并且初始化黑猫子类的成员
Bcat := &BlackCat{}
   /*
   实例化 BlackCat 结构,此时 Cat 也同时被实例化
   --->实例化子类结构体基类结构体同时被实例化
   类似于面向对象中的“派生”,实例化时,BlackCat 中的 Cat 也会一并被实例化
   */
Bcat.Name = "Luci"
Bcat.Color = "Red"
//返回构造实例的子类实例
return Bcat
}

小结:

Go语言中没有提供构造函数相关的特殊机制,用户根据自己的需求,将参数使用函数传递到结构体构造参数中即可完成构造函数的任务

标签:string,BlackCat,Cat,体之,实例,Go,构造函数,结构
来源: https://www.cnblogs.com/JunkingBoy/p/15252884.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有