使用方法
type movie struct {
Name string
Rating float32
}
#m *movie表示方法的接受者
func (m *movie) summary() string{
//code
}
package main
import "fmt"
type person struct{
name string
age int
}
func newPerson(name_1 string,age_1 int) person{
a := person {name:name_1,age:age_1}
return a
}
func (m *person) sayHello() {
fmt.Printf("hello,%s\n",m.name)
}
func main(){
a := newPerson("siqu",12)
a.sayHello()
}
// hello,siqu
在这里,创建了一个构造函数newPerson
创建方法集
方法集是可对特定数据类型进行调用的一组方法,在GO语言中,任何数据类型都可有想关联的方法集,这让您能够在数据类型和方法之间建立关系,
使用方法和指针
在设置接受者时,传递值还是传递值得引用,是有很大差别的
如果接受者是一个指针,那么对结构体进行修改可以修改原始结构体
如果接受者是一个值,那么传递进方法中的就是结构体的副本
func (m *person) sayhello(){
//code,该方法为传递值引用
}
func (m person) sayhello(){
//code,该方法为传递值
}
使用接口
在GO语言中,接口指定了一个方法集,这是实现模块化的强大方式。你可以将接口视为方法集的蓝本,它描述了方法集中的所有方法,但是没有实现它们
接口描述了方法集中的所有方法,如果要使用接口,那么必须要实现它
type Robot inerface{
Goon()
}
package main
import "fmt"
type Robot interface{
Goon() string
}
type T850 struct{
Name string
}
//具体的实现需要和接口描述的一致
func (m *T850) Goon() string{
return m.Name
}
type R2D2 struct{
Name string
}
//具体的实现需要和接口描述的一致
func (m *R2D2) Goon() string{
return m.Name
}
func Go(r Robot){
fmt.Println(r.Goon())
}
func main(){
var t = T850{Name:"SIQU"}
var r = R2D2{Name:"BOKE"}
//在这里,传入的是指针
Go(&t)
Go(&r)
}
通过接口的方式,能够实现代码的复用
接口可以包含多个实现,这就是多态
,如果一个方法集实现了一个接口,那么就说这个方法集与另外一个实现该接口的方法集互为多态
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容