关于golang:golang-中接口-指针类型和值类型方法区别

9次阅读

共计 694 个字符,预计需要花费 2 分钟才能阅读完成。

类型 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…

正文完
 0