Golang--函数签名相同

条件

必须函数的函数名,参数和返回值(类型,个数,顺序)都相同

验证

例子:

定义函数类型,让相同签名的函数自动实现某个接口。

Negtive:

package interfaceTest

import (
"fmt"
"testing"
) type IntString interface {
test(a int ,s string) (int ,string)
} type likeIntString func(s string ,i int) (int ,string) func (i likeIntString) testaaa(ii int, s string) (int, string) {
return i(s, ii)
} func TestInterface(t *testing.T){
var tt IntString = likeIntString(func(s string, i int) (int, string) {
return i,s
}) i, s := tt.testaaa(7, "dfdf")
fmt.Println(i,s)
}

# Go_test/src/interface/interfaceTest [Go_test/src/interface/interfaceTest.test]

.\interface_test.go:21:6: cannot use likeIntString(func literal) (type likeIntString) as type IntString in assignment:

likeIntString does not implement IntString (missing test method)

.\interface_test.go:25:12: tt.testaaa undefined (type IntString has no field or method testaaa)

Postive

package interfaceTest

import (
"fmt"
"testing"
) type IntString interface {
test(a int ,s string) (int ,string)
} type likeIntString func(s string ,i int) (int ,string) func (i likeIntString) test(ii int, s string) (int, string) {
return i(s, ii)
} func TestInterface(t *testing.T){
var tt IntString = likeIntString(func(s string, i int) (int, string) {
return i,s
}) i, s := tt.test(7, "dfdf")
fmt.Println(i,s)
}
必须函数签名相同(函数名,参数和返回值(类型,个数,顺序)都相同),否则会转换失败,无法实现该接口。

Golang--函数签名相同的更多相关文章

  1. Python: 拷贝函数签名

    使用场景有很多,比如C API在Python下很多都变成了(*args, **kwargs)的参数,这时候可能需要为其添加一个更严格签名来约束参数. 查了许多资料,能有效的拷贝函数签名貌似只能通过动态 ...

  2. GO开发[四]:golang函数

    函数 1.声明语法:func 函数名 (参数列表) [(返回值列表)] {} 2.golang函数特点: a. 不支持重载,一个包不能有两个名字一样的函数 b. 函数是一等公民,函数也是一种类型,一个 ...

  3. Golang 函数

    创建函数 package main import "fmt" //有参数,有返回值 func demo(a int, s string) (int, string) { retur ...

  4. 浅谈python函数签名

    函数签名对象,表示调用函数的方式,即定义了函数的输入和输出. 在Python中,可以使用标准库inspect的一些方法或类,来操作或创建函数签名. 获取函数签名及参数 使用标准库的signature方 ...

  5. golang函数学习笔记

    golang函数特点: a.不支持重载,一个包不能有两个名字一样的函数 b.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量 c.匿名函数 d.多返回值   例子1 func add(a, b ...

  6. swift Equatable 函数签名的测试

    struct Degoo:Equatable { var lex:String var pex:String static func == (left:Degoo, right:Degoo) -> ...

  7. 符号修饰与函数签名、extern “C”(转载)

    转自:http://www.cnblogs.com/monotone/archive/2012/11/16/2773772.html 参考资料: <程序员的自我修养>3.5.3以及3.5. ...

  8. golang函数——可以为类型(包括内置数据类型)定义函数,类似类方法,同时支持多返回值

    不可或缺的函数,在Go中定义函数的方式如下: func (p myType ) funcName ( a, b int , c string ) ( r , s int ) { return } 通过 ...

  9. golang 函数作为类型

    golang 函数作为类型 package main import "fmt" type A func(int, int) func (f A)Serve() { fmt.Prin ...

  10. electron/nodejs实现调用golang函数

    https://www.jianshu.com/p/a3be0d206d4c 思路 golang 支持编译成c shared library, 也就是系统中常见的.so(windows下是dll)后缀 ...

随机推荐

  1. Echo Delay:FL中好用的声音制作处理方法

    今天来一起研究FL Studio的Echo Delay的作用,Echo Delay可以从MIDI输入创建回声,并允许我们通过音量,声像,切除和共振,音高和时间来操纵延迟. 图1:Echo Dealy ...

  2. Python Api接口自动化测试框架 代码写用例

    公司新来两个妹子一直吐槽这个接口测试用例用excel维护起来十分费脑费事,而且比较low(内心十分赞同但是不能推翻自己),妹子说excel本来就很麻烦的工具,于是偷偷的进行了二次改版. 变更内容如下: ...

  3. CollectionUtils和StringUtils

    1.StringUtils(常用-用来操作String的字符串)1.1 判断某字符串是否为空isEmpty StringUtils.isEmpty(null) = true StringUtils.i ...

  4. z-index失效原因分析——由一个bug引发的对层叠上下文和z-index属性的深度思考

    新年刚开工就被一个bug虐得整个人都不好了,特地记录下. (一)bug描述 在一个fixed-data-table(一个React组件)制作的表格中,需要给表头的字段提示的特效,所以做了一个提示层,但 ...

  5. 跟阿斌一起学鸿蒙(2). Ability vs App?

    在进一步实践之前,需要先弄明白一个概念:Ability. 不知道你有没有注意到,使用鸿蒙开发工具DevEco Studio创建项目时,我们选择创建的是一个个Ability. 这是为什么呢? 1. 鸿蒙 ...

  6. C语言中 EXIT_FAILURE和EXIT_SUCCESS

    1.C语言中 宏EXIT_FAILURE和EXIT_SUCCESS定义在头文件stdlib.h中,是一个符号常量,定义如下: #define EXIT_FAILURE 1 #define EXIT_S ...

  7. HTML 和CSS

    1 HTML 介绍1.1 web 服务本质import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080))sk.lis ...

  8. Spring Boot + Sharding-JDBC 读写分离

    本文使用 Sharding-JDBC 实现读写分离,基于 CentOS 7 + MySQL 5.7 一.MySQL 安装及配置 1.1 安装 依次执行命令: sudo wget -i -c http: ...

  9. Zookeeper(5)---分布式锁

    基于临时序号节点来实现分布式锁 为什么要用临时节点呢?如果拿到锁的服务宕机了,会话失效ZK自己也会删除掉临时的序号节点,这样也不会阻塞其他服务. 流程: 1.在一个持久节点下面创建临时的序号节点作为锁 ...

  10. moviepy应用pyinstaller打包后执行报错AttributeError: module audio/video.fx.all has no attribute fadein、crop

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在开发moviepy的Python程序使用pyinstaller打包后 ...