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

类型 T 的可调用方法集包含接受者为 T 的所有方法**

package main

import "fmt"
func main() {
    //可以调用 *T  T类型的方法
    var te1 myPerson  //接口类型
    te1 = &Person{
        Name: "小马",
        Age:  10,
    }
    te1.setName()
    te1.setPerAge()
    fmt.Println(te1)

    //只能调用 T 类型的方法
    var people myPeople
    people = Person{
        Name: "小河",
        Age:  5,
    }
    people.setAge()
    fmt.Println(people)
}

// Person 定义结构体
type Person struct {
    Name string
    Age  int
}

//定义接口
type myPerson interface {
    setName()
    setPerAge()
}

//定义接口
type myPeople interface {
    setAge()
    //setPeopleName()
}

func (p *Person) setName() {
    p.Name = "小呼"
}
func (p Person) setPerAge() {
    fmt.Println("输出年龄:", p.Age)
}

func (p Person) setAge() {
    p.Age = 18
}

//func (p *Person) setPeopleName() {
//    p.Name = "测试"
//}

参考:https://blog.csdn.net/suiban7...


goper
413 声望26 粉丝

go 后端开发