Go语言基础14——方法和接收者

一、方法定义

package main
import "fmt"

// Person是一个结构体
type Person struct {
    name       string
    age        int8
}

// NewPerson 是一个Person类型的构造函数
func NewPerson(name string, age int8) *Person {
    return &Person{
        name: name,
        age:  age,
    }
}

// Dream 是为Person类型定义方法
func (p Person) Dream(){
    fmt.Printf("%s的梦想是学好Go语言!\n", p.name)
}

// SetAge 是一个修改年龄的方法
// 指针接收者 接收者的类型是指针
func (p *Person) SetAge(newAge int8){
    p.age = newAge
}

// SetAge2 是一个使用值接收者来修改年龄的方法
func (p Person) SetAge2(newAge int8){
    p.age = newAge
}

func main(){
    p1 := NewPerson("Jiayuan", 24) // p1是一个Person类型的指针变量
    // (*p1).Dream()
    p1.Dream()

    // 调用修改年龄的方法
    fmt.Println(p1.age)
    p1.SetAge(20)
    fmt.Println(p1.age)
    // 需要修改接收者的值 一定要使用指针类型
    p1.SetAge2(30)
    fmt.Println(p1.age) // 20?
}

二、为任意类型添加方法

package main
import "fmt"

// 为任意类型添加方法
// 只有自己定义的类型才能定义方法
// 基于内置的基本类型造一个我们自己的类型
type myInt int

func (m myInt) sayHi(){
    fmt.Println("hi")
}

func main(){
    var m1 myInt
    m1 = 100
    m1.sayHi()
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容