go语言当中,没有 class 的概念,那么面向对象的编程思想如何展现呢,go语言中对结构体的使用 struct。

package main

import "fmt"

type Person struct {
    name string  
    sex byte
    age int 
}

// 带有接收者的函数叫方法
func (tmp Person) PrintInfo() {
    fmt.Println("tmp = ", tmp)
}

// 通过一个函数,给成员赋值
func (p *Person) SetInfo(n string, s byte, a int) {
    p.name = n
    p.sex = s
    p.age = a
}

func main() {
    // 定义同时初始化
    p := Person {"loong", 'm', 18}
    p.PrintInfo()
    
    // 定义一个结构体变量
    var p2 Person
    (&p2).SetInfo("loong", 'm', 18)
    p2.PrintIn()    
    
    // 另一种写法
    p3 := &Person {"loong", 'm', 18}
    p3.PrintInfo()
}

 

方法总是绑定对象实例,并隐式将实例作为第一参数(receiver),方法的语法如下:
func (receiver ReceiverType) funcName(parameters) (result) {
  // .....
}

*、参数 receiver 可任意命名。如方法中未曾使用,可以忽略参数名。
*、参数 receiver 类型可以是 T 或 *T。基类型 T 不能是接口或指针。
*、不支持重载方法,也就是说,不能定义名字相同但是不同参数的方法。

相关文章:

  • 2021-10-27
  • 2022-03-01
  • 2022-02-17
  • 2021-11-29
  • 2022-12-23
  • 2021-10-14
  • 2021-11-28
  • 2021-10-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-24
  • 2022-12-23
相关资源
相似解决方案