返回顶部
首页 > 资讯 > 精选 >如何在 Go 中嵌入第三方类型?
  • 904
分享到

如何在 Go 中嵌入第三方类型?

go语言 2024-02-09 20:02:08 904人浏览 泡泡鱼
摘要

在Go语言中,嵌入第三方类型是一种强大的功能,可以让我们在不修改原有代码的情况下扩展和定制已有的类型。通过嵌入第三方类型,我们可以继承其方法和属性,实现代码的复用和扩展。本文将为您介绍

Go语言中,嵌入第三方类型是一种强大的功能,可以让我们在不修改原有代码的情况下扩展和定制已有的类型。通过嵌入第三方类型,我们可以继承其方法和属性,实现代码的复用和扩展。本文将为您介绍如何在Go语言中嵌入第三方类型,并给出一些实际应用场景的示例。无论您是Go语言的初学者还是有一定经验的开发者,相信本文都能为您提供实用的指导。

问题内容

在我的应用程序中,使用了 decimal 包 GitHub.com/shopspring/decimal。

为了在 decimal.decimal 类型上编写自定义函数,我创建了自己的 decimal 类型并嵌入了 decimal.decimal

type decimal struct {
    decimal.decimal
}

这很好用,我现在可以访问 decimal 对象上的方法:

a := decimal{decimal.newfromfloat(1.0)}
b := decimal{a.neg()}

某些 decimal.decimal 方法需要 decimal.decimal, f.ex 类型的参数:

c := decimal{a.add(b)}

上面的行由于错误而无法编译:cannot use b (decimal类型的变量)作为十进制。a.add参数中的十进制值

我尝试将 decimal 转换为 decimal.decimal:

c := decimal{a.add((decimal.decimal)(b))}

由于以下错误,上述代码无法编译:

cannot convert b (variable of type Decimal) to decimal.Decimal

问题:如何以允许使用“父”方法的方式扩展/嵌入第三方类型并且可以使用扩展类型作为方法中的参数这需要父母类型的论证吗?

解决方法

使用类型声明但没有显式字段名称的字段称为嵌入字段。嵌入字段必须指定为类型名称 t 或指向非接口类型名称 *t 的指针,并且 t 本身可能不是指针类型。 非限定类型名称充当字段名称。

因此,一个快速而肮脏的解决方案是简单地使用“非限定类型名称”访问该字段。

_ = decimal{a.add(b.decimal)}

但是,如果您在使用新类型时寻求更无缝的体验,那么您唯一的选择就是重新声明需要原始类型的方法并在其位置使用新类型。这些重新声明的方法只需是将一个实例的嵌入字段传递给另一实例的嵌入字段的方法的简单包装器。例如:

type Time struct {
    time.Time
}

func (t Time) In(loc *time.Location) Time {
    return Time{t.Time.In(loc)}
}

func (t Time) Equal(u Time) bool {
    return t.Time.Equal(u.Time)
}

以上就是如何在 Go 中嵌入第三方类型?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何在 Go 中嵌入第三方类型?

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

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

猜你喜欢
  • 如何在 Go 中嵌入第三方类型?
    在Go语言中,嵌入第三方类型是一种强大的功能,可以让我们在不修改原有代码的情况下扩展和定制已有的类型。通过嵌入第三方类型,我们可以继承其方法和属性,实现代码的复用和扩展。本文将为您介绍...
    99+
    2024-02-09
    go语言
  • 如何在Android Studio项目中导入第三方类库
    本篇文章给大家分享的是有关如何在Android Studio项目中导入第三方类库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第三方类库源码将一网友的XMPP代码从ADT转到A...
    99+
    2023-05-31
    studio android 第三
  • 如何在Clion中引入第三方库
    如何在Clion中引入第三方库?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。如何配置CMake的所有配置都写在一个叫CMakeLists.txt的文件当中,所有的配置都写在该文...
    99+
    2023-06-06
  • Go 第三方库之类型转换问题
    目录01 为什么需要类型转换02 spf13/cast1)To_ 形式函数2)To_E 形式函数03 总结强类型语言有它的优势,但也有不便利的地方,最典型的就是类型转换。Golang...
    99+
    2024-04-02
  • vscode中如何导入第三方库
    在vscode中导入第三方库的方法:1.打开vscode;2.新建终端;3.安装pip模块;4.使用pip install命令导入第三方库;具体步骤如下:首先,打开vscode软件,进入vscode操作界面;在vscode操作界面中,点击上...
    99+
    2024-04-02
  • 如何在 Go 中测试嵌套输入
    php小编柚子为您介绍如何在 Go 中测试嵌套输入。在编写 Go 代码时,经常会遇到需要处理嵌套输入的情况,例如嵌套的 JSON 数据或多维数组。如何有效地测试这些嵌套输入是一个关键问...
    99+
    2024-02-14
  • Go语言中怎么导入第三方库
    Go语言中怎么导入第三方库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。环境变量首先回想一下,我们安装goland的时候,设置了几个比较重要的环境变量,也就是G...
    99+
    2023-06-20
  • python如何导入第三方库
    要导入第三方库,首先需要确保已经安装了该库。可以使用pip命令来安装第三方库,例如:```pip install 库名```安装完成...
    99+
    2023-10-10
    python
  • idea如何导入第三方包
    这篇文章给大家分享的是有关idea如何导入第三方包的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。方式一.选中你的包,然后右键方式二:mvn install:install-file -Dgro...
    99+
    2023-06-25
  • 如何在pyCharm中下载第三方库
    这篇文章主要介绍如何在pyCharm中下载第三方库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!安装第三方库有俩个方法使用pip命令来进行安装(pip是Python的包管理器。这意味着它是一个工具,允许你安装和管理不...
    99+
    2023-06-14
  • thinkphp如何安装第三方类库
    这篇文章主要讲解了“thinkphp如何安装第三方类库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp如何安装第三方类库”吧!thinkphp安装第三方类库的方法:1、下载sd...
    99+
    2023-07-04
  • 理解PHP在HTML中的三种嵌入方式
    PHP是一种十分常用的服务器端脚本语言,广泛应用于Web开发中。在HTML中,可以使用三种不同的方式嵌入PHP代码,分别是直接嵌入、包含文件和使用PHP标记。接下来将分别介绍这三种嵌入...
    99+
    2024-03-05
    php标记 嵌套代码 输出变量
  • 第三方Jar包如何在Maven中添加
    这篇文章给大家介绍第三方Jar包如何在Maven中添加,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在利用Maven构建项目的时候会出现某些Jar包无法下载到本地的Repository中,鉴于这种情况比较普遍存在,特归...
    99+
    2023-05-31
    maven 第三 mave
  • 如何在python中使用paramiko第三方库
    这期内容当中小编将会给大家带来有关如何在python中使用paramiko第三方库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性...
    99+
    2023-06-06
  • Go语言类型内嵌和结构体内嵌如何使用
    这篇文章主要讲解了“Go语言类型内嵌和结构体内嵌如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言类型内嵌和结构体内嵌如何使用”吧!结构体可以包含一个或多个匿名(或内嵌)字段,即...
    99+
    2023-07-05
  • 第三方应用如何接入钉钉
    第一步:在钉钉官方网站上进行注册并获取账号信息 在钉钉官方网站上注册账号并获取账号信息,这是接入第三方应用的第一步。在注册过程中需要填写企业相关信息,例如公司名称、联系人、联系方式等。此外,还需要填写企业信息以及开发者信息等。这些信息的填...
    99+
    2023-10-28
    第三方
  • vs的python如何导入第三方库
    要在VS Code中导入第三方库,可以使用以下步骤: 打开VS Code编辑器 在项目目录下创建一个新的Python文件 在Pyt...
    99+
    2024-04-02
  • 如何在结构体中嵌套定义两层类型?
    知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个Golang开发实战,手把手教大家学习《如何在结构体中嵌套定义两层类型?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新...
    99+
    2024-04-04
  • tp如何引用第三方类vendor或extend?
    方法一:命名空间引入 我们只需要把自己的类库包目录放入EXTEND_PATH目录(默认为extend,可配置),就可以自动注册对应的命名空间。 我们在extend目录下面新增一个ext目录,然后定义一个\ext\Test类( 类文件位于...
    99+
    2023-09-01
    php 开发语言 Powered by 金山文档
  • 掌握PHP在HTML页面中的三种嵌入方式
    掌握PHP在HTML页面中的三种嵌入方式 PHP是一种广泛应用于Web开发的服务器端脚本语言,它具有强大的功能和灵活性,可以与HTML页面结合,实现动态网页的构建。在编写PHP项目时,...
    99+
    2024-03-05
    编程关键词 php嵌入方式 html页面中 php脚本
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作