Golang ---接口

 接口注意细节

package main

import (
	"fmt"
)

/**
 	接口注意事项:
1) 接口本身不能创建实例,但是可以指向一个实现了该接口的自定义类型的变量(实例)

2)接口中所有的方法都没有方法体,即都是没有实现的方法

3) 在Golang中,一个自定义类型需要将某个接口的所有方法都实现,说这个自定义类型实现了该接口

4)一个自定义类型只有实现某个接口,才能将该自定义类型的实例(变量)赋值给接口类型

5) 只要是自定义数据类型,就可以实现接口,不仅仅是结构体类型

6) 一个自定义类型可以实现多个接口

7)Golang 接口中不能有任何变量

8)一个接口(比如AA接口 )可以继承多个别的接口 (比如BB CC接口),这时如果要实现A接口,\
也必须将B,C接口的方法全部实现

9)interface 类型默认是一个指针类型(引用类型),如果没有对interface 初始化就是用那么会输出nil

10)空接口interface{} 没有任何方法,所以所有类型都实现了空接口
*/
 type OneInterface interface {
	 info()
 }
type tWOInterface interface {
	offer()
}
type Person struct {
	Name string
}
type fake int

func (ss fake) info() {
fmt.Println("fake Info")
}

func ( p *Person) info() {
	fmt.Println("Person Info()")
}

func  (p *Person )offer()  {
	fmt.Println("Person offer~~~")
}

/*func ( p Person) info() {
	fmt.Println("Person Info()")
}*/

type BB interface {
	test01 ()
}
type AA interface {
	test02 ()
}
type cc interface {
	AA
	BB
	test03()
}


type Empty interface {  //10)空接口interface{} 没有任何方法,所以所有类型都实现了空接口

}

//如果要实现CC 接口也要必须实现AA BB 接口

func (p Person)test01()  {
	fmt.Println("Person test01")
}
func (p Person)test02()  {
	fmt.Println("Person test02")
}
func (p Person)test03()  {
	fmt.Println("Person test03")
}


func main() {

	var p Person
	var one OneInterface = &p  // 	结构体变量,实现了info()  即实现了OneInterface 接口
	one.info()

	//只要是自定义数据类型,就可以实现接口,不仅仅是结构体类型
	var ss fake
	var ssone OneInterface = ss
	ssone.info()

	var two tWOInterface = &p //自定义接口可以实现多个接口
	two.offer()

	var aa AA = p
	var bb BB = p
	var c cc = p

	aa.test02()
	bb.test01()
	c.test03()
	c.test01()
	c.test02()

	var empty Empty = p
	fmt.Println(empty)

	var emp interface{} = p
	fmt.Println(emp)

	var num1 float64 = 55.22
	emp = num1
	empty = num1
	fmt.Println(emp,empty)
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值