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

golang 接口笔记

时间:2016-02-01 20:27:11      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

一、概念

接口类型是对其它类型行为的抽象和概括;因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力。

Go语言中接口类型的独特之处在于它是满足隐式实现的。也就是说,我们没有必要对于给定的具体类型定义所有满足的接口类型;简单地拥有一些必需的方法就足够了。

这种设计可以让你创建一个新的接口类型满足已经存在的具体类型却不会去改变这些类型的定义;当我们使用的类型来自于不受我们控制的包时这种设计尤其有用。

二、接口的声明及使用

package main

import (
    "fmt"
)

type ICale interface {
    Sum(a, b int) int
}

type Computer struct {
}

func (this *Computer) Sum(a, b int) int {
    return a + b
}

func (this *Computer) Print() int {
    fmt.Println("ai")
}

func main() {
    fmt.Println(new(Computer).Sum(1, 2))
    var icale ICale = new(Computer)
    fmt.Println(icale.Sum(2, 3))
}

三、空接口类型:对实现它的类型没有要求,所以我们可以将任意一个值赋给空接口类型

package main

import (
    "fmt"
)

func main() {
    var v interface{}
    v = 1
    fmt.Println(v)
    v = "123"
    fmt.Println(v)
    v = true
    fmt.Println(v)
    v = map[string]int{"one": 1}
    fmt.Println(v)
}
package main

import (
    "fmt"
)

func main() {
    print(map[string]int{"one": 1})
    print(func() int { return 1 })
    print(func() int { return 1 }())
}

func print(val interface{}) {
    fmt.Println(val)
}

golang 接口笔记

标签:

原文地址:http://www.cnblogs.com/loveyx/p/5175911.html

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