iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何将接口转换为它实现的另一个接口?
  • 152
分享到

如何将接口转换为它实现的另一个接口?

2024-02-13 20:02:25 152人浏览 八月长安
摘要

PHP小编草莓将为大家介绍如何将接口转换为它实现的另一个接口。在编程中,接口是一种定义了一组方法的抽象类型,而另一个接口则是实现了这些方法的具体类型。将接口转换为另一个接口可以帮助我们

PHP小编草莓将为大家介绍如何将接口转换为它实现的另一个接口。在编程中,接口是一种定义了一组方法的抽象类型,而另一个接口则是实现了这些方法的具体类型。将接口转换为另一个接口可以帮助我们在不改变原有代码的情况下,扩展已有的功能。本文将详细讲解这个过程,并提供实例演示,帮助读者更好地理解和应用这一技巧。

问题内容

简而言之 - 我希望能够将其底层类型实现特定接口的接口类型转换为该特定接口。

我正在使用插件包来查找一个新函数,它看起来像这样(我还有很多其他相同的函数):

func newdomainprimarykey() any { return domainprimarykey{} }

(这是在运行时生成的,因此我不能仅将其引用为 domainprimarykey)

我的查找和调用如下所示:

                plugin, err := plugin.open("my-plugin")
                if err != nil {
                    return err
                }

                symget, err := plugin.lookup("new" + pluginname)
                if err != nil {
                    return err
                }

                newgenmodel, ok := symget.(func() any)
                if !ok {
                    return errors.new("unexpected type from module symbol")
                }

                anygenmodel := newgenmodel()
                genmodel, ok := anygenmodel.(genmodel) // **this is where the problem is
                if !ok {
                    return errors.new("unexpected type from module symbol")
                }

                genmodelinstance := genmodel.get()

在上面,我尝试将“anygenmodel”(一个接口)转换为它实现的“genmodel”接口,但是,这不起作用。

我确信它实现了这个接口,因为当我执行以下操作时,我没有收到任何错误。

type GenModel interface {
    Get() any
    TableName() string
}

var _ GenModel = (*DomainPrimaryKey)(nil) // this doesn't complain

我该怎么做?我发现这篇文章不是我要找的,但看起来很相似。

提前感谢您对此提供的任何帮助 - 这对我来说已经成为一个真正的障碍。

解决方法

如果底层类型实现这两个接口,则非常简单:

package main

import "fmt"

type IFace1 interface {
    DoThis()
}

type IFace2 interface {
    DoThat()
}

type impl struct{}

func (i *impl) DoThis() {
    fmt.Println("I implement IFace1")
}

func (i *impl) DoThat() {
    fmt.Println("I implement IFace2")
}

func GetIFace1() IFace1 {
    return &impl{}
}

func main() {
    i1 := GetIFace1()

    i1.DoThis()

    i2 := i1.(IFace2)

    i2.DoThat()
}

游乐场

如果您的代码不起作用,那么我首先会质疑您的断言,即 anygenmodel 的底层类型实际上实现了 genmodel 并从那里开始工作。

以上就是如何将接口转换为它实现的另一个接口?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何将接口转换为它实现的另一个接口?

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

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

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

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

下载Word文档
猜你喜欢
  • 如何将接口转换为它实现的另一个接口?
    php小编草莓将为大家介绍如何将接口转换为它实现的另一个接口。在编程中,接口是一种定义了一组方法的抽象类型,而另一个接口则是实现了这些方法的具体类型。将接口转换为另一个接口可以帮助我们...
    99+
    2024-02-13
  • controller接口跳转到另一个controller接口的实现
    controller接口跳转到另一个controller接口 @RestController @RequestMapping("/aaa") public class TestC...
    99+
    2024-04-02
  • java实现一个接口调取另一个接口(接口一调取接口二)
    目录java一个接口调取另一个接口工具类springboot中使用(接口一)接口二接口的调用与调用别人的接口别人调用我们的接口,与controller方法开发类似我们调用别人的接口j...
    99+
    2024-04-02
  • 将接口切片向下转换为子接口切片
    来到编程网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《将接口切片向下转换为子接口切片》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!...
    99+
    2024-04-04
  • 如何将 TypeScript 接口转换为 Go 结构体?
    php小编新一为您介绍如何将 TypeScript 接口转换为 Go 结构体。当我们在前端使用 TypeScript 开发时,经常会定义接口来描述数据结构。而在后端使用 Go 语言开发...
    99+
    2024-02-09
  • 将接口转换为目标类型
    学习Golang要努力,但是不要急!今天的这篇文章《将接口转换为目标类型》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!问题内容我有...
    99+
    2024-04-04
  • golang怎么实现接口转换
    随着越来越多的企业采用 Golang 进行开发,Golang 语言的高效、简洁、安全等优点也逐渐被人们所认可。其中,Golang 提供了接口(interface)作为与外部的桥梁,使得代码更加灵活且易于扩展。在实际开发中,我们有时需要将接口...
    99+
    2023-05-14
  • 如何在Spring中实现一个BeanFactoryPostProcessor接口
    本篇文章为大家展示了如何在Spring中实现一个BeanFactoryPostProcessor接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。接口简介BeanFactoryPostProcess...
    99+
    2023-06-06
  • 如何用 Golang 将时间对象转换为另一个时区?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-22
  • C#如何实现多个接口
    这篇文章主要介绍“C#如何实现多个接口”,在日常操作中,相信很多人在C#如何实现多个接口问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何实现多个接口”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!一个...
    99+
    2023-06-17
  • 使用 unsafe.Pointer 直接将结构“point”转换为另一个结构是否安全?
    在Go语言中,使用`unsafe.Pointer`可以直接将一个结构体转换为另一个结构体。然而,这种转换是否安全是一个值得讨论的问题。在使用`unsafe.Pointer`进行结构体转...
    99+
    2024-02-09
    go语言 重构代码
  • 用golang实现接口和结构的转换
    go语言中,可以使用断言完成接口转换和结构转换。接口转换包括类型断言和值断言,用于将值从一个接口类型转换为另一个接口类型。结构转换则用于将一个结构转换为另一个结构。 Go 中使用断言实...
    99+
    2024-04-08
    接口 结构 golang go语言
  • Go Ginrest实现一个RESTful接口
    目录背景特性使用例子实现原理功能列表处理请求处理响应处理错误请求上下文操作请求结构体处理注背景 基于现在微服务或者服务化的思想,我们大部分的业务逻辑处理函数都是长这样的: 比如grp...
    99+
    2024-04-02
  • java利用webService 如何实现一个WSDL接口
    java利用webService 如何实现一个WSDL接口?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、使用JDK生成WSDL的对象类cmd进入JDK的bin文件中  ...
    99+
    2023-05-31
    java wsdl webservice
  • 无法根据 Golang 中的条件将接口转换为结构
    目前编程网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《无法根据 Golang 中的条件将接口转换为结构》,也希望能帮助到大家,如果阅读完后真的对...
    99+
    2024-04-04
  • 为什么 Go 不能强制转换实现泛型的接口?
    问题内容 我正在尝试探索 Go 的类型系统,并在编写一个小型副项目时获得乐趣,但最终遇到了一个奇怪的情况。 当一个 interface 可以采用一个类型(其中将其用于函数)时,一个 s...
    99+
    2024-02-05
  • 如何编写一个与Unix系统实时接口兼容的PHP接口?
    在今天的互联网时代,PHP作为一种开源的服务器端脚本语言,被广泛应用于Web应用程序的开发,但是在一些特殊场景下,需要与Unix系统进行实时接口兼容,这就需要我们编写一个与Unix系统实时接口兼容的PHP接口。 下面,我们将为您介绍如何编写...
    99+
    2023-09-13
    实时 unix 接口
  • 如何使用PHP实现转发接口
    随着互联网的发展,越来越多的网站和应用程序需要使用转发接口来实现不同系统之间的数据传递和交流。在这个过程中,PHP技术无疑是最受欢迎的解决方案之一,因为它提供了强大的功能和灵活性,使开发人员能够轻松地实现复杂的转发接口。一、什么是转发接口?...
    99+
    2023-05-14
    php
  • C++中怎么实现一个接口
    C++中怎么实现一个接口,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。定理1:C++接口是依赖的终点。接口不需要依赖任何东西。推论1:依赖C++接口是安全的。不会带来更多的...
    99+
    2023-06-17
  • go语言接口类型如何转换
    这篇文章主要介绍“go语言接口类型如何转换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言接口类型如何转换”文章能帮助大家解决问题。go语言可利用类型断言来进行接口类型。在Go中,无论是将一个...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作