• Golang--函数签名相同


    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)
    }
    
    必须函数签名相同(函数名,参数和返回值(类型,个数,顺序)都相同),否则会转换失败,无法实现该接口。
  • 相关阅读:
    GPU上的基本线性代数
    NVIDIA数据中心深度学习产品性能
    GeforceRTX系列参数对比
    NVIDIA CUDA-X AI
    NVIDIA 认证系统
    汉字手写训练和识别
    动态表单工作量给后端
    机器学习PAL数据可视化
    越是向前 越受阻力
    Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: Cannot emit more than one data
  • 原文地址:https://www.cnblogs.com/l1ng14/p/14164419.html
Copyright © 2020-2023  润新知