go 接口

来源:互联网 发布:淘宝产品参数 编辑:程序博客网 时间:2024/06/06 09:14

go自学第二天,留个笔记,万一以后忘了呢

package mainimport "fmt"type I interface{    get() int     set(int)}//S实现了I接口type S struct{    value int }//S在这里叫接受者func (s S) get() int{    return s.value}func (s *S) set(x int){    s.value = x }//这里我们可以通过接口I来传入实现I接口的各种类型(比如上面的S)func myTest(i I){     fmt.Printf("value=%d\n", i.get())    i.set(100)    fmt.Printf("value=%d\n", i.get())}func main(){    s := &S{}    myTest(s)//这里有两个规则要说一下}

1.类型 *T 的可调用方法集包含接受者为 *T 或 T 的所有方法集
这条规则说的是如果我们用来调用特定接口方法的接口变量是一个指针类型,那么方法的接受者可以是值类型也可以是指针类型。

2.类型 T 的可调用方法集包含接受者为 T 的所有方法
这条规则说的是如果我们用来调用特定接口方法的接口变量是一个值类型,那么方法的接受者必须也是值类型该方法才可以被调用。

可以变换接受者的值类型和调用时传入类型测试以下。