实践篇1|青训营

61 阅读1分钟

入门指南之方法

一、声明新类型

  • 关键字type可以用来声明新类型
    • type celsius float64
    • var temperature celsius = 20
  • 虽然Celsius是一种全新的类型,但是由于它和float64具有相同的行为和表示,所以赋值操作能顺利执行。
  • 例如加法等运算,也可以像float64那样使用

例子

type celsius float64

const degrees = 20
var temperature celsius = degrees

temperature += 10

fmt.Println(temperature)  //30
  • 为什么要声明新类型:极大的提高代码可读性和可靠性
  • 不同类型不能混用

二、通过方法添加行为

  • 在C#、Java里,方法属于类
  • 在Go里,它提供了方法,但是没提供类和对象
  • Go比其他语言的方法要灵活
  • 可以将方法与同包中声明的任何类型相关联,但不可以是int、float64等预声明的类型进行关联。

例子

type celsius float64
type kelvin float64

func kelvinToCelsius(k kelvin) celsius{
     return celsius(k - 273.15)
}

func (k kelvin) celsius() celsius {
     return celsius(k - 273.15)
}
  • 上例中,celsius方法虽然没有参数。但它前面却有一个类型参数的接受者
  • 每个方法可以有多个参数,但只能有一个接受者
  • 在方法体中,接受者的行为和其它函数一样
  • 方法声明图解:

微信图片_20230828212524.jpg 三、方法调用

  • 变量.方法()

例子

func main() {

    var k kelvin = 294.0
    var c celsius

    c = kelvinToCelsius(k)
    c = k.celsius()

    fmt.Println(c)
}

type kelvin float64
type celsius float64

func kelvinToCelsius(k kelvin) celsius {
     return celsius(k - 273.15)
}

func (k kelvin) celsius() celsius {
     return celsius(k - 273.5)
}