本文主要是介绍深入理解go中interface机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学...
前言
go的interface是一组method的集合,不关心属性(数据),只关心行为(方法)。具体使用中你可以自定义自己的 struct,并提供特定的 interface 里面的 method 就可以把它当成 interface 来使用
interface使用
package main import "fmt" type Speaker interface { Say() string } type User struct { id int64 `UserService` name string } func (user *User) Say() string { return "aaaa" } func (user *User) Say1() string { return "aaaa1" } func main() { var user = &User{ 1, "aa", } var s Speaker s = user fmt.Println(s.Say()) } func speak(s Speaker) { fmt.Println(s.Say()) }
也可以定义多个interface
package main import "fmt" type Speaker interface { Say() string } type Speaker1 interface { Say1() string } type User struct { id int64 `UserService` name string } func (user *User) Say() string { return "aaaa" } func (user *User) Say1() string { return "aaaa1" } func main() { var user = &User{ 1, "aa", } var ( s Speaker s1 Speaker1 ) s = user s1 = user fmt.Println(s.Say()) fmt.Println(s1.Say1()) } func speak(s Speaker) { fmt.Println(s.Say()) }
也可以使用接口的组合
package mainhttp://www.chinasem.cn import "fmt" type Speaker interface { Speak() string } type Mover inte编程rface { Move() string } type Hello interface { Speaker Mover } type User struct { Name string } func (a User) Speak() string { return "aaa" } func (a User) Move() string { return "bbb" } func main() { user := User{Name: "aa"} showRobot(&user) } func showRobot(r Hello) { fmt.PrintChina编程ln("Speak:", r.Speak()) fmt.Println("Move:", r.Move()) }
单值类型断言
package main import "fmt" func main() { var i interface{} = "Hello, World!" // 使用单值类型断言 s := i.(string) fmt.Println(s) // 输出: Hello, World! // 如果类型不匹配,会抛出 panic n := i.(int) fmt.Println(n) }
结果为
类型判断
package main import "fmt" func describe(i interface{}) { switch v := i.(type) { case int: fmt.Println("整型: ", v) case string: fmt.Println("字符javascript串:", v) case bool: fmt.Println("布尔值:", v) default: fmt.Println("未知类型: ", v) } } func main() { describe(66) describe("aa") 编程China编程}
输出结果为
总结
interface
是 Go 语言中实现多态性和代码复用的重要机制,能够让你编写更加通用和灵活的代码,可以利用它更好编码
到此这篇关于深入理解go中interface机制的文章就介绍到这了,更多相关go interface机制内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!
这篇关于深入理解go中interface机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!