首页 > 其他分享 >golang 接口与接收器

golang 接口与接收器

时间:2024-09-25 13:36:48浏览次数:8  
标签:接收器 Printer 方法 接口 golang Print StringPrinter

在Go语言中,接口(interface)是一种类型,它定义了一组方法,但不包括这些方法的具体实现。任何类型,只要它实现了接口所有声明的方法,则它就实现了该接口

接收器(receiver)是Go中的一个概念,它指的是在方法(method)的定义中,在关键字func和方法名之间的参数。这个参数定义了方法可以操作的基础变量的类型和名称。

下面是一个简单的例子,展示了如何在Go中定义接口和接收器:

package main
 
import "fmt"
 
// 定义一个接口
type Printer interface {
    Print()
}
 
// 定义一个结构体和实现Printer接口的方法
type StringPrinter struct {
    value string
}
 
// 这里的(s StringPrinter)就是接收器,s是方法可以操作的基础变量
// Print方法实现了Printer接口
func (s StringPrinter) Print() {
    fmt.Println(s.value)
}
 
func main() {
    // 创建一个StringPrinter实例
    printer := StringPrinter{value: "Hello, World!"}
 
    // 使用接收器调用方法
    printer.Print() // 输出: Hello, World!
 
    // 将printer当作Printer类型来使用
    var p Printer = printer
    p.Print() // 输出: Hello, World!
}

在这个例子中,我们定义了一个Printer接口一个实现了该接口的StringPrinter结构体。StringPrinter的Print方法有一个接收器((s StringPrinter)),这个接收器定义了方法可以操作的变量是StringPrinter类型的实例。在main函数中,我们创建了StringPrinter的实例,并直接调用了它的Print方法,同时我们也展示了如何将printer变量作为Printer类型来使用。

标签:接收器,Printer,方法,接口,golang,Print,StringPrinter
From: https://www.cnblogs.com/yubo-guan/p/18431156

相关文章

  • 【运维监控】Prometheus+grafana+blackbox_exporter+alertmanager监控业务接口异常预
    运维监控系列文章入口:【运维监控】系列文章汇总索引文章目录一、prometheus部署二、grafana部署三、blackbox_exporter部署1、下载2、解压3、启动4、验证四、prometheus集成blackbox_exporter1、添加prometheus监控规则2、添加prometheus的预警规则3、添加prometheus......
  • 接口测试工具postman
    1、下载postman的安装包2、下载好的安装包,点击打开3、介绍postman(1)左边创建一个集合creatanewcollection(2)点击加号创建接口修改post或get请求方式  输入URLbody-网址 key:账号、请求体的入参参数:密码(3)保存接口,存放到集合中 (4)send发送接口创建了一个接......
  • Python+requests测试接口、关联接口
    一个通过筛选,一个提取cookie(有两种写法)一、依赖接口(1)第一种方法:requests.session 准备两个接口:一个登录接口,一个用户查询接口登录接口:http://cms.duoceshi.cn/manage/loginJump.do请求体:userAccount:adminloginPwd:123456用户查询接口:http://cms.duoceshi.cn/manage/q......
  • 30. 串联所有单词的子串 Golang实现
    题目描述:给定一个字符串s和一个字符串数组words。words中所有字符串长度相同。s中的串联子串是指一个包含words中所有字符串以任意顺序排列连接起来的子串。例如,如果words=["ab","cd","ef"],那么"abcdef","abefcd","cdabef","cdefab","efabcd&q......
  • cameralink卡设计原理图:287-基于FMC接口的1路Base cameralink输入1路Base cameralink
    基于FMC接口的1路Basecameralink输入1路Basecameralink输出子卡  一、板卡概述      该板卡是我公司自主研发的1路Basecameralink输入,1路Basecameralink输出的FMC子卡,LPC-FMC连接器。FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设......
  • 视频汇聚EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?
    视频汇聚EasyCVR视频监控平台,作为一款智能视频监控综合管理平台,凭借其强大的视频融合汇聚能力和灵活的视频能力,在各行各业的应用中发挥着越来越重要的作用。EasyCVR平台具备强大的拓展性和灵活性,支持多种视频流的外部分发,如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、WS-......
  • 金口诀排盘 api接口
    ​金口诀排盘,金口诀是中国古代的一种高级预测学,它融合了太乙、奇门、六壬、三式绝学的精华。学会金口诀,凡事不用问。金口诀以干支体系为基础,与现代的时间、空间、人体五脏六腑、十二经络完全吻合,所以能够更好地运用于现代生活,解读人事与健康。请求方式接口名称:流盘-金口诀排盘......
  • 分布式环境中,接口超时重试带来的的幂等问题如何解决?
    目录标题幂等不能解决接口超时吗?幂等的重要性什么是幂等?为什么需要幂等?接口超时了,到底如何处理?如何设计幂等?幂等设计的基本流程实现幂等的8种方案1.select+insert+主键/唯一索引冲突(常用)2.直接insert+主键/唯一索引冲突3.状态机幂等(常用)4.抽取防重表5.token令牌(前......
  • 如何让你提供的接口满足SLA?接口性能优化技巧必看篇
    目录标题什么是SLA?SLA的主要组成部分为什么需要SLA?示例接口性能优化技巧1.索引优化2.sql优化3.远程调用4.重复调用5.异步处理6.避免大事务7.锁粒度8.分页处理9.加缓存10.分库分表11.辅助功能什么是SLA?SLA是“ServiceLevelAgreement”的缩写,中文译为......
  • golang学习笔记11-模块化与包管理【重要】
    注:本人已有C,C++,Python基础,只写本人认为的重点。在第六节(golang学习笔记6)中,我讲了如何自定义包,包其实有两种引用方式,一种是不用模块,还有种是用模块。不用模块的是旧版本的做法,因为在18年8月发布的1.11版本中,增加了模块管理的内容,到现在六年多了,所以旧版本的方法早过时了。......