Golang--函数签名相同
2024-09-01 14:45:31
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)
}
必须函数签名相同(函数名,参数和返回值(类型,个数,顺序)都相同),否则会转换失败,无法实现该接口。
最新文章
- 深入理解JS的delete
- Html书写规范
- Mac 安装 eclipse
- features block
- Android 核心分析 之八Android 启动过程详解
- Java的初步认识
- JSP内置对象详解
- NUMBER_GET_NEXT
- uitableviewcell 自适应大小 参考
- dom例子
- perl $d = encode_utf8($r); $f = decode_json($d)
- MySQL连接数实时查看
- Python 捕捉traceback异常栈信息
- sql日期格式小应用 记录一下
- Python全栈之路----函数进阶----装饰器
- orcal 程序自动和手动项
- 【linux应用】将一个大文件按行拆分成小文件
- log4j UdpAppender
- GetTextMetrics与GetTextExtent的区别
- 【推荐系统论文笔记】Introduction To Recommender Systems: Algorithms and Evaluation