AI智能
改变未来

Golang–函数签名相同


Golang–函数签名相同

条件

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

验证

例子:

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

Negtive

:

package interfaceTestimport (\"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 interfaceTestimport (\"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)}
必须函数签名相同(函数名,参数和返回值(类型,个数,顺序)都相同),否则会转换失败,无法实现该接口。
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Golang–函数签名相同