golang 基础 - 接口定义

demo4.go

package main

import "fmt"

type Student struct {
    Name string
    Age int
    Sex int
}

func (this Student) init(name string,age int,sex int){
    this.Age = age
    this.Sex = sex
    this.Name = name
    fmt.Println(this)
}

func main() {
    s := Student{}
    s.init("张高元",20,1)
    fmt.Println(s)
}

file

我们打印发现 init 方法初始化没有对 Student 这个 strcut 结构体的值做任何改变, 如果我们想要做到改变怎么做呢? 只需要在实现 接口 的方法 加上 * (指针) 即可.

package main

import "fmt"

type integer int

func (i integer) print() interface{}{
    return i
}

type Student struct {
    Name string
    Age int
    Sex int
}

func (this *Student) init(name string,age int,sex int){
    this.Age = age
    this.Sex = sex
    this.Name = name
    fmt.Println(this)
}

func (s Student) get() Student{
    return s
}

func main() {
    s := Student{}

    // Todo  (&s).init("张高元",20,1) 本来我们使用了指针需要这样写,但是 golang 为我们做了封装.所以我们不再需要自己写了.简写成下面的方式即可.

    s.init("张高元",20,1)
    stu := s.get()
    fmt.Println(stu)
    fmt.Println(s)

    // Todo 2
    var a integer
    a = 100
    _a := a.print()
    fmt.Println(_a)
}

file

发现值已经成功修改. golang 默认所有的值都是 传递的方式.

猜你喜欢

转载自blog.csdn.net/cpongo6/article/details/89249332
今日推荐