go圣经 ——方法

news/2024/10/7 23:16:32/

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

我们又称之为选择器

package mainimport "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 {Pointcolor.RGBA
}

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

我们来看下面两组代码:

var (mu sync.Mutex // guards mappingmapping = make(map[string]string)
)func Lookup(key string) string {mu.Lock()v := mapping[key]mu.Unlock()return v
}
var cache = struct {sync.Mutexmapping 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)

省略了上面的匿名函数


http://www.ppmy.cn/news/1443949.html

相关文章

重学java 26.面向对象 内部类⭐

“别担心,你一定能如愿。” —— 24.4.29 1.什么时候使用内部类: 当一个事物的内部,还有一个部分需要完整的结构去描述,而内部的完整结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类 比如&#xff1…

【C++】C++11 的 auto 和 decltype 两个关键字的应用

auto 和 decltype 是 C11 引入的两个关键字,它们增强了类型推导机制,使得代码更加简洁、灵活且易于维护。下面是对这两个关键字的说明以及使用案例。 1. auto auto 关键字允许编译器根据初始化表达式自动推导出变量的类型。这在处理复杂类型或者避免重…

一文解读 SQL 生成工具

SQL 生成工具可用于测试 Parser 与其他数据库产品的兼容性,通过解析 YACC 语法文件中的产生式,生成对应的 SQL 语句,再使用数据库执行该 SQL,根据结果判断语句是否与其他数据库语法兼容。 01工具使用 语法文件预处理 预处理目的…

JAVA 每日面试题(二)

Java 高级面试问题及答案 1. 什么是Java内存模型(JMM)?它在多线程编程中扮演什么角色? 答案: Java内存模型(JMM)是一个抽象的概念,它定义了Java程序在执行时,变量的访问…

C++初阶-----对运算符重载的进一步理解

1.对于运算符重载的进一步理解 (1)运算符重载就是运算符重新定义的意思,我们如果想要比较两个整形数据的大小,这个是很容易的,但是当我们定义一个类之后,使用这个类创建对象,想要直接比较这两个…

如何在React中实现状态钩子

在React中,状态钩子(State Hooks)主要是用来在函数组件中添加和管理组件状态的。最常用的状态钩子是useState。以下是如何在React中使用useState钩子来实现状态管理的一个简单示例: jsx复制代码 import React, { useState } from…

什么是RabbitMQ,RabbitMQ基本概念,RabbitMQ的使用场景

目录 面试官:什么是RabbitMQ,RabbitMQ的使用场景什么是RabbitMQ?RabbitMQ基本概念RabbitMQ的使用场景举例该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:什么是RabbitMQ,RabbitMQ的使用场景 …

抖音智能运营系统源码

这是一个一站式服务的抖音智能运营系统,旨在提升内容创作者和营销人员的工作效率。它是一个综合性的在线服务平台,专为抖音内容创作者和营销人员设计。系统基于高性能、可扩展性强的ThinkPHP框架,整合了视频处理、数据分析、文案生成与配音等…