首页 > 其他分享 >Go语言中接口和函数的用法

Go语言中接口和函数的用法

时间:2024-03-14 20:29:05浏览次数:18  
标签:定义 Area 接口 用法 Shape PrintArea Go 函数

  1. 函数:

    • 在 Go 语言中,函数是一等公民,可以像其他变量一样被传递、赋值和使用。
    • 函数可以单独定义,也可以作为匿名函数或闭包使用。
    • 可以定义带有参数和返回值的函数,函数可以作为参数传递给其他函数,也可以作为返回值返回给其他函数。
    • 函数也可以被用来实现接口中的方法。
  2. 接口:

    • 接口是一组方法的集合,接口定义了对象的行为。
    • 在接口中,只定义方法的签名而不需要方法的具体实现。
    • 任何类型只要拥有了接口需要的所有方法,就被认为实现了这个接口。
    • 接口可以用于实现多态,通过接口可以对不同的具体类型进行统一的处理。

示例:

// 定义接口
type Shape interface {
    Area() float64
}

// 定义矩形类型
type Rectangle struct {
    Width  float64
    Height float64
}

// 定义矩形类型的 Area 方法
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

// 定义一个计算面积的函数,接收 Shape 接口类型的参数
func PrintArea(s Shape) {
    fmt.Println("形状的面积为", s.Area())
}

func main() {
    // 创建一个矩形实例
    rect := Rectangle{Width: 3, Height: 4}

    // 调用函数使用接口
    PrintArea(rect)
}

在这个示例中,我们定义了一个接口Shape,并定义了一个矩形类型Rectangle,它实现了Shape接口的方法Area。然后我们定义了一个接受Shape接口类型参数的函数PrintArea,并最终在main函数中调用了PrintArea函数。

这个例子展示了函数和接口在 Go 语言中的使用方式,以及它们之间是如何配合工作的。

标签:定义,Area,接口,用法,Shape,PrintArea,Go,函数
From: https://blog.csdn.net/weixin_42492982/article/details/136692158

相关文章

  • Spring揭秘:Aware接口应用场景及实现原理!
    内容概要Aware接口赋予了Bean更多自感知的能力,通过实现不同的Aware接口,Bean可以轻松地获取到Spring容器中的其他资源引用,像ApplicationContext、BeanFactory等。这样不仅增强了Bean的功能,还提高了代码的可维护性和扩展性,从而让Spring的IoC容器变得更加强大和灵活。核心......
  • Spring揭秘:BeanDefinition接口应用场景及实现原理!
    BeanDefinition接口灵活性高,能够描述Bean的全方位信息,使得Spring容器可以智能地进行依赖注入和生命周期管理。同时,它支持多种配置方式,简化了Bean的声明和配置过程,提高了开发效率和可维护性。技术应用场景BeanDefinition接口定义了一个Bean的元数据,它包含了用于创建Bean对......
  • MongoDB从0到1:高效数据使用方法
            MongoDB,作为一种流行的NoSQL数据库。从基础的文档存储到复杂的聚合查询,从索引优化到数据安全都有其独特之处。文末附MongoDB常用命令大全。目录1.引言MongoDB简介MongoDB的优势和应用场景2.基础篇安装和配置MongoDBMongoDB基本概念使用MongoDBShel......
  • go反射实战
    文章目录demo1数据类型判断demo2打印任意类型数据demo1数据类型判断使用reflect.TypeOf()方法打印go中数据类型,可参考go官方API文档;使用格式化参数%T也能打印数据类型。packagemainimport"fmt"import"reflect"import"io"import"os"funcmain(){ T......
  • Go语言中的面向对象编程(OOP)
    在Go语言中,虽然没有像面向对象语言那样的类,但通过结构体类型和方法,仍然支持部分面向对象编程(OOP)的概念。封装(Encapsulation)封装是一种将一个对象的实现细节隐藏起来,使其对其他对象不可见的做法,这样可以实现解耦。例如,考虑以下结构体:typeStudentstruct{namestring......
  • gorm使用事务并发情况下切有最大mysql连接数限制的情况下的BUG,踩坑了
    现象服务器pprof中的goroutines很多,无法释放,肯定是异常.代码//收到请求上个赛季个人秘境赛季排行func(this*MsgProc)MsgProc_PersonSecretLastRankReq(msg*protoMsg.PersonSecretLastRankReq){ global.GetSrvInst().GetThreadGo().Go(func(ctxcontext.Context)......
  • 操作Redis之go-redis
    目录一、go操作redis的选择二、redis安装1.windowd平台安装方案2.mac平台和linux平台安装方案3.redis应用三、快速使用1.快速连接2.字符串操作(1)方法(2)示例3.列表操作(1)方法(2)示例4.hash操作(1)方法(2)示例5.集合操作(1)方法(2)示例6.有序集合操作(1)方法(2)示例7.通用操作(1)方法(2)示例8.......
  • 操作Redis之redigo
    目录一、go操作redis的选择二、redigo快速使用1.快速链接三、redis操作四、连接池一、go操作redis的选择golang操作redis主要有两个库,go-redis和redigo。go-redis:star数更多,支持连接哨兵及集群模式的Redisredigo:star数少一些,操作更简单二、redigo快速使用安装:gog......
  • 淘口令解析源头api接口
    淘口令网提供淘口令解析功能,淘口令解密工具可一键将淘口令文本解析还原成URL链接,可把淘口令转换成网址链接,方便查看口令图片,口令标题,口令有效期等,不限制1.口令解析工具可一键将加密的淘口令代码解析还原成正常链接。2.主要给用户提供电脑端查看口令内容,和打开口令里面......
  • C++、Java 和 Go 是三种流行的编程语言,它们各有不同的特点和应用场景
    C++:面向对象和泛型编程:C++是一种多范式编程语言,支持面向对象编程(OOP)和泛型编程(GenericProgramming)。性能:C++是一种系统级编程语言,注重性能和内存管理。它提供了直接的内存访问和指针操作,使得程序员可以更精细地控制内存和计算资源。灵活性:C++允许程序员直接操作硬件,并提......