• go接口


    go接口

    接口定义了一种类型需要实现的方法(method),由于接口中不存在成员变量,也不存在方法实现,所以可以解决多继承中的冲突(即使方法名重复了也没啥,不会出现歧义)。
    go中实现接口的方式很巧妙,不是显式地声明实现某个接口,比如java中的implements,而是隐式地检查一个类型是否实现了特定接口的方法,Go语言中的接口与其他语言最大的一点区别是它的非侵入性,比如:

    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    type Shape interface {
    	Area() float64
    }
    
    type Circle struct {
    	radius float64
    }
    
    func (c Circle) Area() float64 {
    	return math.Pi * c.radius * c.radius
    }
    
    func main() {
    	var s Shape = Circle{1}
    	fmt.Println(s.Area())
    }
    

    类型断言

    类型断言有两种形式:

    • res := x.(T)
    • res, ok := x.(T)

    其中x必须是接口(空接口亦可),T可以是接口或具体类型, ok表示断言是否成功,若成功则res的值为x的值,类型为x的类型,否则panic。

    接口值比较

    接口值可以用==!=相比较。两个接口值相等,仅当他们都是nil,或者他们动态类型相同,并且动态的值也根据这个动态类型的==相等。

  • 相关阅读:
    CH6301 疫情控制
    [BeiJing2010组队]次小生成树 Tree
    CH6303 天天爱跑步
    CH6302 雨天的尾巴
    POJ3417 Network
    Problem 1999. -- [Noip2007]Core树网的核
    [Apio2010]patrol 巡逻
    「TJOI2018」str
    NOI2018 你的名字
    BZOJ5137 [Usaco2017 Dec]Standing Out from the Herd
  • 原文地址:https://www.cnblogs.com/HachikoT/p/14089068.html
Copyright © 2020-2023  润新知