go语言基础 接口 interface

接口:interface

表示一个约定,契约,都是功能的描述(方法的声明)
语法:一个或多个方法的声明的集合。不能有实现,不能有字段。
实现类:可以是任意类型
只需要将接口中方法都实现,那么就是实现该接口。
type A interface{
fun() 返回值
}
type AImpl struct{
字段
}
func (a Ampl) fun()返回值{
}

package main

import (
   "math"
   "fmt"
)

type Shape interface {
   area() float64  //接口只声明方法名称没有方法实现
   peri() float64
}
type Circle struct {  //实现了接口中的两个方法,就是该方法的实现类
   radius float64//半径
}

func (c Circle) area() float64  {  //实现接口中的方法
   return c.radius * c.radius * 3.14
}

func (c Circle) peri()float64  {  //实现接口中的方法
   return 2 * 3.14 * c.radius
}

type Triangle struct {
   a float64
   b float64
   c float64
}

func (t Triangle) area()float64  {  //实现接口中的方法
   p := t.peri() / 2
   area := math.Sqrt(p*(p-t.a)*(p-t.b)*(p-t.c))
   return area
}
func (t Triangle) peri() float64  {//实现接口中的方法
   return t.a + t.b + t.c
}

func testShape(s Shape)  {   //声明一个函数用接口作为参数,这样该接口的实现类就可以作为参数传入
   fmt.Println("面积是:",s.area(),",周长是:",s.peri())
}
/*
定义一个接口:形状
   定义两个方法:
      周长()
      面积()

定义三个结构体分别实现该接口:
   三角形:周长(),面积()
      海伦公式:
   矩形:周长(),面积()
   圆形:周长(),面积()

在主函数中:分别创建三种形状的对象,并调用对应的周长和面积的方法

增加一个测试的的函数:
   testArea(接口形状)-->三角形,原型,矩形
   testPeri()-->三角形,圆形,矩形
 */

func main()  {
   t1 := Triangle{3,4,5}
   testShape(t1)
   testShape(Triangle{5,6,8})
   testShape(Circle{5})
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值