关于go:Golang-给结构体绑定方法

如果咱们有一个个人档案的构造体,而后想给这个构造体绑定办法能够这样:

package main

import "fmt"

//定义一个装档案的构造体
type Archive struct {
    name, gender string
    age          int
    mom          *Archive
    dad          *Archive
}

//定义一个和档案构造体绑定的办法
func (person Archive) FormatArchive() {
    fmt.Printf("name: %s\n", person.name)
    fmt.Printf("gender: %s\n", person.gender)
    fmt.Printf("age: %d\n", person.age)
}

func main() {
    //    实例化一个构造体
    bill := Archive{name: "bill", age: 17, gender: "Male"}
    //    调用构造体绑定的办法
    bill.FormatArchive()
}

那么,当咱们想在构造体绑定的办法上扭转构造体的数据的时候,咱们须要用指针,具体就是这样:

package main

import "fmt"

//定义一个装档案的构造体
type Archive struct {
    name, gender string
    age          int
    mom          *Archive
    dad          *Archive
}

//定义一个和档案构造体绑定的办法
func (person Archive) FormatArchive() {
    fmt.Printf("name: %s\n", person.name)
    fmt.Printf("gender: %s\n", person.gender)
    fmt.Printf("age: %d\n", person.age)
}

//定义一个扭转实力参数的函数
func (person *Archive) decrease_age() {
    person.age -= 1
}

func main() {
    //    实例化一个构造体
    bill := Archive{name: "bill", age: 17, gender: "Male"}
    //    调用构造体绑定的办法
    bill.FormatArchive()
    bill.decrease_age()
    bill.FormatArchive()
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理