接口
-
定义及使用
package main
import (
"fmt"
)
//定义一个接口
type Human interface {
sayHello()
}
type student struct {
name String
age int
}
type Teacher struct {
group String
}
func (stu *student) sayHello() {
fmt.Printf("student[%s,%d] \n", stu.name, stu.agE)
}
func (tea *Teacher) sayHello() {
fmt.Printf("Teacher[%s] \n", tea.group)
}
func WhoSay(tmp Human) {
tmp.sayHello()
}
func main() {
//第一种使用
s := &student{"Bon", 12}
t := &Teacher{"math"}
WhoSay(s)
WhoSay(t)
//第二种使用 创建切片
slic := make([]Human, 2)
slic[0] = s
slic[1] = t
for _, v := range slic {
v.sayHello()
}
}
-
接口继承
package main
import (
"fmt"
)
//定义一个接口
type Humaner interface {
sayHello()
}
//继承Humaner
type Personer interface {
Humaner
sayWorld(str String)
}
type student struct {
name String
age int
}
func (stu *student) sayHello() {
fmt.Printf("student[%s,%d] \n", stu.name, stu.agE)
}
func (stu *student) sayWorld(str String) {
fmt.Println(str)
}
func main() {
var i Personer
s := &student{"Bob", 23}
i = s
i.sayHello()
i.sayWorld("song")
}
-
接口转化(超集可以转化为子集,子集不可以转化为超集)
package main
import (
"fmt"
)
//定义一个接口
type Humaner interface { //子集
sayHello()
}
type Personer interface { //超集
Humaner
sayWorld(str String)
}
type student struct {
name String
age int
}
func (stu *student) sayHello() {
fmt.Printf("student[%s,%d] \n", stu.name, stu.agE)
}
func (stu *student) sayWorld(str String) {
fmt.Println(str)
}
func main() {
var i Personer
i = &student{"Tom", 16}
var h Humaner
//子集不能转为超集
// i = h
//超集可以转化为子集
h = i
h.sayHello()
}
-
空接口(可以保存任意类型的数据)
package main
import (
"fmt"
)
func xxx(arg ...interface{}) {
}
func main() {
//空接口可保存任意类型的数据
var i interface{}
i = 10
fmt.Println(i)
var m interface{}
m = "Hello world"
fmt.Println(m)
}
-
判断空接口存储的数据类型
package main
import (
"fmt"
)
func main() {
var i interface{}
i = 10
//使用 变量.(类型) 判断数据数据类型
if value, ok := i.(int); ok == true {
fmt.Println(value)
}
}
package main
import (
"fmt"
)
func main() {
var i interface{}
i = 10
//使用 变量.(typE) 判断数据数据类型
switch value := i.(typE) {
fmt.Printf("int 类型 %d \n", value)
case String:
fmt.Print("String 类型 %s \n", value)
}
}
大佬总结
以上是大佬教程为你收集整理的golang学习笔记——面向对象(接口)全部内容,希望文章能够帮你解决golang学习笔记——面向对象(接口)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。