`

golang接口转换为实现类 (cannot have dynamic type misshing method has pointer receiver)

阅读更多

举例如下:

type TestInterface interface{

    Test()

}

 

type MyTest struct{

   a int

}

func (test *MyTest) Test(){

 fmt.Printf("a is:%d",test.a)

}

func (test *MyTest) AfterTest(){

 fmt.Printf("MyTest is finished.")

}

 

func runATest(ti TestInterface){

  ti.Test()

  mytest,ok:=ti.(MyTest)

   if ok {

      mytest.AfterTest()

   }

}

如上的接口类型转换会报错:cannot have dynamic type  MyTest,misshing method has pointer receiver。

这个原因是因为实现了TestInterface接口的类是*MyTest,而不是MyTest,下面修改一个正确的版本

func runATest(ti TestInterface){

  ti.Test()

  pMyTest,ok:=ti.(*MyTest)

   if ok {

      pMyTest.AfterTest()

   }

}

这样就能顺利通过编译了

分享到:
评论

相关推荐

    Golang 使用接口实现泛型的方法示例

    ### Golang 使用接口实现泛型的方法详解 #### 引言 在 Go 语言中,泛型的概念直到 Go 1.18 才正式引入。在此之前,开发者常常通过接口(interface)来实现类似泛型的效果。本文将深入探讨如何在 Go 语言中利用接口...

    Go-kazaam-在Golang中任意转换JSON文档的API

    《Go-kazaam:在Golang中高效处理JSON文档的利器》 在现代软件开发中,JSON(JavaScript Object Notation)已经成为数据交换的主要格式。它轻量级、易读易写,广泛应用于Web服务和API接口。对于使用Golang(Go语言...

    alipay, 支付宝集成接口的 golang 实现.zip

    支付宝集成接口的Golang实现是针对开发者们在构建与支付宝接口对接的应用时所需的重要工具。Golang,一种静态类型的、编译式的、并发性的、垃圾回收的语言,因其高效和简洁的特性,在微服务和后端开发领域备受青睐。...

    Golang静态HTTP服务器实现细节

    Golang静态HTTP服务器实现细节

    Go-Golang实现HTML转PDF

    在本文中,我们将深入探讨如何使用Golang(也称为Go语言)来实现HTML到PDF的转换。Go语言因其高效、简洁的语法以及丰富的标准库而备受开发者喜爱,它非常适合进行这种类型的任务。在这个项目中,我们将关注以下几个...

    golang nil接口和空接口

    类型通过实现一个接口的所有方法来实现该接口。既然无需专门显式声明,也就没有“implements”关键字。 接口也是值。它们可以像其它值一样传递。 接口值可以用作函数的参数或返回值。 在内部,接口值可以看做包含值...

    golang实现高性能IM单聊系统,UDP分发

    本篇将深入探讨如何利用Golang实现一个高性能的IM单聊系统,特别关注UDP(用户数据报协议)在其中的作用和分发策略。 首先,我们需要理解Golang中的并发模型。Golang引入了goroutine和channel的概念,它们是实现高...

    Go-OpenExchangeRatesAPI的一个golang接口

    在本文中,我们将深入探讨如何在Golang(Go语言)中使用Open Exchange Rates API来实现货币转换功能。Open Exchange Rates API 提供了实时和历史汇率数据,为开发者提供了简单、高效的方式来集成货币转换功能到他们...

    golang实现的csv及txt转excel工具.zip

    该压缩包文件“golang实现的csv及txt转excel工具.zip”包含了一个使用Go语言(Golang)编写的实用程序,用于将CSV(逗号分隔值)和TXT(纯文本)文件转换为Excel格式。这个工具已经编译为可执行文件(exe),这意味...

    golang 中英双版

    《Go语言中英双版手册》是一份涵盖了Go语言编程的详细参考资料,旨在为学习者提供全面、深入的指导。由于中文版存在部分翻译不全和JavaScript脚本错误导致的报错问题,以及某些页面无法打开的情况,学习者在使用过程...

    实例学习Golang–接口(一、接口的实现)

    接口类型名:使用 type 将接口定义为自定义的类型名。 Go语言的接口在命名时,一般会在单词后面添加 er, 如有写操作的接口叫 Writer, 有字符串功能的接口叫 Stringer, 有关闭功能的接口叫 Closer 等。 方法名:当...

    循环鼠标自动点击功能- Golang实现

    在本文中,我们将深入探讨如何利用Golang实现这个功能,并了解相关的核心知识点。 首先,我们需要了解的是Golang的图形用户界面(GUI)库。虽然Golang的标准库并没有内置GUI支持,但社区提供了多个第三方库,如`go-...

    Golang 日志接口应用实战源码

    总的来说,“Golang日志接口应用实战源码”涉及到的知识点涵盖了接口设计、日志处理策略、自定义日志处理器的实现以及在实际项目中的应用方式。理解并掌握这些知识点,能够帮助开发者更好地管理和维护项目中的日志...

    Go-Golang实现转发服务

    在IT行业中,Go语言(Golang)以其高效、简洁和并发特性受到了许多开发者的青睐,尤其是在构建网络服务方面。本文将深入探讨如何使用Go来实现一个转发服务,以帮助开发者理解Go语言在网络编程中的应用。 首先,让...

    Golang实现的基于beego框架的接口在线文档管理系统

    开发缘起是公司IT部门需要一款简单实用的项目接口文档管理和分享的系统。其功能和界面源于 kancloud 。 可以用来储存日常接口文档,数据库字典,手册说明等文档。内置项目管理,用户管理,权限管理等功能,能够满足...

    Golangleetcode-golang,LeetCode solutions with Golang(Golang 实现

    【Golang】leetcode-golang,LeetCode solutions with Golang(Golang 实现) (Leetcode golang, LeetCode solutions with Golang (Golang implementation)) 【Golang】leetcode-golang,LeetCode solutions with Golang...

    epoll 使用golang实现

    这些都需要在Golang的`cgo`包中进行相应的系统调用和逻辑转换。 以下是一些关键步骤的概述: 1. **创建Epoll实例**:在C代码中调用`epoll_create1`创建一个`epoll`实例,并将其句柄传回Go代码。 2. **注册事件**...

    golang使用sort接口实现排序示例

    在Golang中,排序操作是通过`sort`包来实现的。`sort`包提供了一系列的函数和接口,使得我们能够方便地对不同类型的切片进行排序。在本示例中,我们将关注如何使用`sort.Interface`接口自定义排序规则。 `sort....

    golang环境配置及对接s3对象存储demo手册及源代码

    在本文中,我们将深入探讨如何配置Golang环境以及如何使用Golang对接Amazon S3对象存储。首先,让我们从安装Golang环境开始。 1. **安装Go环境** - **Windows**:在Windows操作系统上,你可以从Go的官方网站下载...

Global site tag (gtag.js) - Google Analytics