go语言中方法的基本用法

方法

基本理解

方法就是一个函数,但是指定了调用的类型。它带有一个特殊的接收器类型。只有指定类型才可调用。很方便,定义了就能用

基本语法

实例代码就是

package main

import (  
    "fmt"
)
//创建结构体
type Employee struct {  
    name     string
    salary   int
    currency string
}

//在这里指定该函数必须是Employee才可调用
func (e Employee) displaySalary() {  
    fmt.Printf("Salary of %s is %s%d", e.name, e.currency, e.salary)
}

func main() {  
    //创建并初始化结构体
    emp1 := Employee {
        name:     "Sam Adolf",
        salary:   5000,
        currency: "$",
    }
    //通过"."来掉用displaySalary方法
    emp1.displaySalary()
}

属性

属性一

可以定义相同的方法名

可调用的类型不一致,可以定意相同的方法名

例如

func (r Rectangle) area() float64 {
	return r.width * r.height
}

func (c Circle) area() float64 {
	return c.radius * c.radius * math.Pi
}

属性二:

方法里面可以访问接收者的属性

就像struct访问字段一样

方法的继承

和java中的继承不太一样,go并不支持类,继承关系发生在匿名结构体中

例如

package main

import "fmt"

//这里的Human就类似java中的父类
type Human struct {
	name  string
	age   int
	phone string
}
//以下的两个结构体就类似Java中的子类
type Student struct {
	Human  //匿名字段
	school string
}
type Employee struct {
	Human   //匿名字段
	company string
}

//相当于是父类中的方法
func (h *Human) SayHi() {
	fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone)
}

func main() {
	mark := Student{Human{"Mark", 25, "222-222-YYYY"}, "MIT"}
	sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"}
	//两个匿名结构体都可调用SayHi方法
    mark.SayHi()
	sam.SayHi()
}

例如

为什么要使用方法

1.虽然可以使用函数来解决方法可以解决的问题,但是go语言不支持类,而方法是一种类似于类的行为的方法

2.方法可以重复定义而函数不可以

3.方法中有类似继承关系的用法存在

总之,个人感觉,因为go语言不支持类,为了解决这一个根本性的问题添加了方法机制

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值