广告
返回顶部
首页 > 资讯 > 精选 >go语言有没有构造函数
  • 256
分享到

go语言有没有构造函数

2023-07-05 00:07:24 256人浏览 独家记忆
摘要

这篇文章主要介绍“Go语言有没有构造函数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言有没有构造函数”文章能帮助大家解决问题。go语言没有构造函数。go语言作为结构化的语言是没有面向对象语言

这篇文章主要介绍“Go语言有没有构造函数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言有没有构造函数”文章能帮助大家解决问题。

go语言没有构造函数。go语言作为结构化的语言是没有面向对象语言中的构造方法的,不过可以通过一些方式实现类似的面向对象语言中构造方法的效果,也就是使用结构体初始化的过程来模拟实现构造函数。

构造函数是一种特殊的方法,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。

golang作为结构化的语言是没有面向对象语言中的构造方法的,但是Golang却可以像c++一样实现类似继承、构造函数一样等面向对象编程的思想和方法。

因为 struct 是值类型,如果结构体比较复杂的话,值拷贝 性能开销会比较大,所以该构造函数返回的是结构体指针类型。

规范

  • New 关键字开头

  • 返回结构体指针

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

如果使用结构体描述猫的特性,那么根据猫的颜色和名字可以有不同种类的猫,那么不同的颜色和名字就是结构体的字段,同时可以使用颜色和名字构造不同种类的猫的实例,这个过程可以参考下面的代码:

type Cat struct {    Color string    Name  string}func NewCatByName(name string) *Cat {    return &Cat{        Name: name,    }}func NewCatByColor(color string) *Cat {    return &Cat{        Color: color,    }}

代码说明如下:

  • 第 1 行定义 Cat 结构,包含颜色和名字字段。

  • 第 6 行定义用名字构造猫结构的函数,返回 Cat 指针。

  • 第 7 行取地址实例化猫的结构体。

  • 第 8 行初始化猫的名字字段,忽略颜色字段。

  • 第 12 行定义用颜色构造猫结构的函数,返回 Cat 指针。

在这个例子中,颜色和名字两个属性的类型都是字符串,由于Go语言中没有函数重载,为了避免函数名字冲突,使用 NewCatByName() 和 NewCatByColor() 两个不同的函数名表示不同的 Cat 构造过程。

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

黑猫是一种猫,猫是黑猫的一种泛称,同时描述这两种概念时,就是派生,黑猫派生自猫的种类,使用结构体描述猫和黑猫的关系时,将猫(Cat)的结构体嵌入到黑猫(BlackCat)中,表示黑猫拥有猫的特性,然后再使用两个不同的构造函数分别构造出黑猫和猫两个结构体实例,参考下面的代码:

type Cat struct {    Color string    Name  string}type BlackCat struct {    Cat  // 嵌入Cat, 类似于派生}// “构造基类”func NewCat(name string) *Cat {    return &Cat{        Name: name,    }}// “构造子类”func NewBlackCat(color string) *BlackCat {    cat := &BlackCat{}    cat.Color = color    return cat}

代码说明如下:

  • 第 6 行,定义 BlackCat 结构,并嵌入了 Cat 结构体,BlackCat 拥有 Cat 的所有成员,实例化后可以自由访问 Cat 的所有成员。

  • 第 11 行,NewCat() 函数定义了 Cat 的构造过程,使用名字作为参数,填充 Cat 结构体。

  • 第 18 行,NewBlackCat() 使用 color 作为参数,构造返回 BlackCat 指针。

  • 第 19 行,实例化 BlackCat 结构,此时 Cat 也同时被实例化。

  • 第 20 行,填充 BlackCat 中嵌入的 Cat 颜色属性,BlackCat 没有任何成员,所有的成员都来自于 Cat。

这个例子中,Cat 结构体类似于面向对象中的“基类”,BlackCat 嵌入 Cat 结构体,类似于面向对象中的“派生”,实例化时,BlackCat 中的 Cat 也会一并被实例化。

关于“go语言有没有构造函数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: go语言有没有构造函数

本文链接: https://www.lsjlt.com/news/348399.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • go语言有没有构造函数
    这篇文章主要介绍“go语言有没有构造函数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言有没有构造函数”文章能帮助大家解决问题。go语言没有构造函数。go语言作为结构化的语言是没有面向对象语言...
    99+
    2023-07-05
  • php中有没有构造函数
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php中有没有构造函数?php 构造函数__construct(mixed ...$values = ""): voidPHP 允许开发者在一个类中定...
    99+
    2020-02-23
    php
  • Go语言有没有队列和栈结构
    这篇文章主要介绍“Go语言有没有队列和栈结构”,在日常操作中,相信很多人在Go语言有没有队列和栈结构问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言有没有队列和栈结构”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-04
  • go语言有没有gc
    这篇文章主要介绍“go语言有没有gc”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言有没有gc”文章能帮助大家解决问题。go语言有gc。GC是指垃圾回收,是一种自动内存管理的机制;go语言支持...
    99+
    2023-07-04
  • go语言有没有while
    go语言中没有while关键字,不支持while和do-while循环结构。从功能上讲,但凡while语句能做的事情,for语句也可以实现,因此Go语言统一了for语句和while语句。且Go的开发团队有比较严重的洁癖,while并不是一个...
    99+
    2023-05-14
    go语言
  • Go语言中如何使用结构体构造函数
    这篇文章将为大家详细讲解有关Go语言中如何使用结构体构造函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Go语言的结构体 构造函数下面的代码就实现了一个P...
    99+
    2022-10-18
  • go语言有没有反射
    这篇文章主要讲解了“go语言有没有反射”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言有没有反射”吧!go语言有反射。Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和...
    99+
    2023-07-04
  • go语言有没有缩进
    go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。本教程操作环境:windows7系统、G...
    99+
    2023-05-14
    go语言 Golang Go
  • go语言有没有分号
    本篇内容主要讲解“go语言有没有分号”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go语言有没有分号”吧!go语言中没有分号,go方法是由一条一条语句构成,每个语句后面是不需要分号的;go又称G...
    99+
    2023-07-05
  • javascript语言中有没有函数重载
    这篇文章将为大家详细讲解有关javascript语言中有没有函数重载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 javascript没有函...
    99+
    2022-10-19
  • go语言有没有可调用库
    go语言有可调用库,分别是:1、Go Modules,是Go语言的依赖管理工具;2、net/http,是Go语言标准库中用于处理HTTP请求和响应的模块;3、sqlx,是一个被广泛使用的数据库连接库;4、goroutine,是强大简单的并发...
    99+
    2023-07-17
  • go语言中有没有set集合
    这篇文章将为大家详细讲解有关go语言中有没有set集合,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。go语言没有set集合。Set是一个集合,set里的元素不能重复;golang的标准库中没有对set的操...
    99+
    2023-06-15
  • go语言如何通过函数改造函数
    在Go语言中,可以通过将函数作为参数传递给其他函数,或者将函数作为返回值,来实现函数的改造。1. 将函数作为参数传递给其他函数:可以...
    99+
    2023-10-12
    Go语言
  • 有没有公司开始用go语言
    有。使用Go语言的公司有:Google、Facebook、腾讯、七牛云、京东、小米、360、美团、滴滴、新浪、搜狗等。google作为创造了Go语言的公司,有很多基于Go开发的开源项目,比如kubernets,docker。京东云消息推送系...
    99+
    2023-05-14
    go语言 Golang
  • go语言中有没有字符类型
    这篇文章将为大家详细讲解有关go语言中有没有字符类型,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Go语言的字符类型有以下两种:一种是 uint8 类型,或者叫 byte 型,代表了 ASC...
    99+
    2023-06-15
  • go语言数据结构有哪些
    go语言有数组、切片、映射、链表、栈、队列、树、堆和图这些数据结构。1、数组,可以存储相同类型的元素;2、切片,可以根据需要自动扩展或缩小;3、映射,可以使用映射来实现字典、哈希表等数据结构;4、链表,每个节点包含数据和指向下一个节点的指针...
    99+
    2023-07-31
  • Python构造函数有哪些
    Python中的构造函数是__init__函数Python中子类如果定义了构造函数,父类的构造函数是不会执行的。__init__函数使用方法:class A:def __init__(self, name):self.name = name...
    99+
    2022-10-11
  • go语言的数据结构有哪些
    go语言数据结构有数组、切片、映射、结构体、通道、接口、函数等等。详细介绍:1、数组(Array):一组固定长度的相同类型元素的集合;2、切片(Slice):基于数组的动态长度序列,可以根据需要动态增长或缩减;3、映射(Map):一种键值对...
    99+
    2023-12-14
    go语言 数据结构
  • go语言中time包的函数有哪些
    这篇“go语言中time包的函数有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中time包的函数有哪些”文章吧...
    99+
    2023-07-06
  • C++语言中构造函数的作用是什么
    C++语言中构造函数的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在C++语言中一个函数可以调用其他函数,在设计良好的C++语言中,每个函数都有特定的目的,就是...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作