码迷,mamicode.com
首页 > 其他好文 > 详细

go 接口

时间:2018-07-27 12:09:15      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:代码   动态类型   port   ram   输出   例子   一个   return   pos   

一、接口是什么

接口提供了一种方式来 说明 对象的行为:如果谁能搞定这件事,它就可以用在这儿。

接口定义了一组方法(方法集),但是这些方法不包含(实现)代码:它们没有被实现(它们是抽象的)。接口里也不能包含变量。

格式:

type Namer interface {
    Method1(param_list) return_type
    Method2(param_list) return_type
    ...
}

  

接口的特性:

  • 类型不需要显式声明它实现了某个接口:接口被隐式地实现。多个类型可以实现同一个接口。
  • 实现某个接口的类型(除了实现接口方法外)可以有其他的方法。
  • 一个类型可以实现多个接口。
  • 接口类型可以包含一个实例的引用, 该实例的类型实现了此接口(接口是动态类型)。

 二、例子:

package main

import "fmt"

type stockPosition struct {
	ticker string
	sharePrice float32
	count float32

}

func (s stockPosition) getValue() float32{
	return s.sharePrice * s.count
}

type car struct {
	make string
	model string
	price float32
}

func (c car) getValue() float32 {
	return c.price
}

type valuable interface {
	getValue() float32
}

func showValue(asset valuable){
	fmt.Printf("Value of the asset is %f\n", asset.getValue())
}

func main () {
	var o valuable = stockPosition{"GOOG", 577.20, 4}
	showValue(o)
	o  = car{"BWM","M3", 66500}
	showValue(o)
}

  输出:

Value of the asset is 2308.800049
Value of the asset is 66500.000000

 

接口是一种契约,实现类型必须满足它,它描述了类型的行为,规定类型可以做什么。接口彻底将类型能做什么,以及如何做分离开来,使得相同接口的变量在不同的时刻表现出不同的行为,这就是多态的本质。

 

go 接口

标签:代码   动态类型   port   ram   输出   例子   一个   return   pos   

原文地址:https://www.cnblogs.com/liubiaos/p/9376415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!