网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

go语言中interface的实践

package main

import (
    "fmt"
    "math"
)

type geometry interface {
    area() float64
    perim() float64
}

type square struct {
    width, height float64
}

type circle struct {
    radius float64
}

//要在go中实现一个接口,我们只需要实现接口中的所有方法

//`square`的实现,s接收者接受了area()方法
func (s square) area() float64 {
    return s.width * s.height

}

//`square`的实现,s接收者接受了perim()方法
func (s square) perim() float64 {
    return 2*s.width + 2*s.height

}

//`circle`的实现,c接收者接受了area()方法
func (c circle) area() float64 {
    return math.Pi * c.radius * c.radius

}

//`circle`的实现,c接收者接受了perim()方法
func (c circle) perim() float64 {
    return 2 * math.Pi * c.radius

}

//如果一个变量或者参数是接口类型,那么我们可以调用这个被命名的接口中的方法
func measure(g geometry)  {
    fmt.Println(g)
    fmt.Println(g.area())
    fmt.Println(g.perim())

}

func main()  {

    //定义并初始化square、circle struct,可以理解为结构体的实例?结构体的接收者?
    s := square{width: 3, height: 4}
    c := circle{radius: 5}

    measure(s)
    measure(c)
}

//output:
{3 4}
12
14
{5}
78.53981633974483
31.41592653589793

本文标题:go语言中interface的实践
网页地址:http://bjjierui.cn/article/jdippp.html

其他资讯