05-方法

@

1. 概述

  • 什么是方法
    一个方法就是一个包含了接受者的函数。所有给定类型的方法属于该类型的方法集。

  • 接收者
    接收者类型可以是(除接口外)任何类型。

  • 语法

func (接收者 接收者类型) 方法名(参数 参数类型) [返回值 返回类型]{
   /* 函数体*/
}

2. 简单示例

  • 完整代码
package main

import (
	"fmt"
)

type Circular struct {
	name string //结构体里成员可以定义很多,但不一定用到。
	r float64
}

func (circular Circular) CalculateArea() float64 {
	return 3.14 * circular.r * circular.r  //该方法只用到了结构体的半径这个成员。
}

func main() {
	var myCircular Circular
	myCircular.r = 10.00
	fmt.Println("圆的面积 = ",myCircular.CalculateArea())
}

【诠释】
我们定义了:

  • 一个Circular的结构体类型
  • 一个CalculateArea的方法(其接收者为Circular

使用时:

  • 实例化了一个叫circular的结构体,类型为Circular
  • 调用方法时使用 结构体名.方法名()
  • 结果输出:
圆的面积 =  314

3. 完整示例

我们写一个规范一些的例子

  • 完整代码
package main

import "fmt"

type XiShu struct {
	ID int
	Name string
	Age int
	Position string
}

func (xiShu *XiShu)Run()(result string) {
	if xiShu.Age >= 18 {
		result  = xiShu.Name+"是一个成年人"
		return result
	}else {
		result = xiShu.Name+"还没有长大"
		return result
	}
}

func main () {
	liuBei := XiShu{
		ID: 0,
		Name: "刘备",
		Age: 28,
		Position: "主公",
	}
	liuBeiResult := liuBei.Run()
	fmt.Println(liuBeiResult)

	zhaoYun := XiShu{
		ID: 5,
		Name: "赵云",
		Age: 16,
		Position: "五虎上将",
	}
	zhaoYunResult := zhaoYun.Run()
	fmt.Println( zhaoYunResult)
}
  • 结果输出
刘备是一个成年人
赵云还没有长大

posted on 2021-11-20 23:58  运维开发玄德公  阅读(5)  评论(0编辑  收藏  举报  来源

导航