go圣经 ——方法

这里只是记录了自己学过一遍但是在圣经(狼吞虎咽)中又看到的新鲜玩意

我们又称之为选择器

package main

import "fmt"

type Rect struct {
    width, height float64
}

// 定义一个方法来计算矩形的面积
func (r Rect) Area() float64 {
    return r.width * r.height
}

func main() {
    rect := Rect{width: 3, height: 4}
    area := rect.Area() // 这里选择了 Rect 类型的实例 rect,并调用其 Area 方法来计算面积
    fmt.Println("Area:", area)
}

方法是与结构体相关联的函数,它允许我们从Rect类型的实例中选择并计算其面积

选择器中有多个同名的方法会报错

type ColoredPoint struct {
    Point
    color.RGBA
}

比如都有max方法在Point和RGBA中,就会报错

我们来看下面两组代码:

var (
    mu sync.Mutex // guards mapping
    mapping = make(map[string]string)
)

func Lookup(key string) string {
    mu.Lock()
    v := mapping[key]
    mu.Unlock()
    return v
}

var cache = struct {
    sync.Mutex
    mapping map[string]string
}{
    mapping: make(map[string]string),
}


func Lookup(key string) string {
    cache.Lock()
    v := cache.mapping[key]
    cache.Unlock()
    return v
}

在第二组代码中我们将这两个变量联合起来变成了一个有mutex方法的 结构体变量,这是一个匿名的struct,同时我们又能使用mapping这个变量,使得结构更加统一

方法值和方法表达式

我们的选择器可以不需要接收器就可以被调用

就是说:

type Rocket struct { /* ... */ }
func (r *Rocket) Launch() { /* ... */ }
r := new(Rocket)
time.AfterFunc(10 * time.Second, func() { r.Launch() })

time.AfterFunc(10 * time.Second, r.Launch)

省略了上面的匿名函数

相关推荐
不爱说话郭德纲6 小时前
聚焦 Go 语言框架,探索创新实践过程
go·编程语言
Bio Coder16 小时前
vim 一次注释多行 的几种方法
linux·编辑器·vim·注释·快捷键·方法·取消注释
码农飞飞18 小时前
详解Rust结构体struct用法
开发语言·数据结构·后端·rust·成员函数·方法·结构体
0x派大星1 天前
【Golang】——Gin 框架中的 API 请求处理与 JSON 数据绑定
开发语言·后端·golang·go·json·gin
IT书架2 天前
golang高频面试真题
面试·go
郝同学的测开笔记2 天前
云原生探索系列(十四):Go 语言panic、defer以及recover函数
后端·云原生·go
秋落风声2 天前
【滑动窗口入门篇】
java·算法·leetcode·go·哈希表
0x派大星4 天前
【Golang】——Gin 框架中的模板渲染详解
开发语言·后端·golang·go·gin
0x派大星5 天前
【Golang】——Gin 框架中的表单处理与数据绑定
开发语言·后端·golang·go·gin
三里清风_6 天前
如何使用Casbin设计后台权限管理系统
golang·go·casbin