您现在的位置是:首页 > 技术笔记 > Go语言Go语言

面向对象

冰山2019-02-12【Go语言】人已围观

简介1.匿名字段
1.1匿名字段创建与初始化
1.2同名字段
1.3指针类型匿名字段
2.方法
2.1基本方法创建
2.2给结构体添加方法
2.3指针变量的方法值
2.4方法继承
2.5方法重写
3.接口
3.1接口实现
3.2多态
3.3接口实例
3.4接口继承与转换
3.5空接口

1.匿名字段

 

1.1匿名字段创建与初始化


package main

import "fmt"

type person struct {
   id int
   name string
   age int
}

type student struct {
   person  //匿名字段
   score float64
}

func main() {
   var a student=student{person{1,"lili",25},98}
   fmt.Println(a)
}

输出结果
{{1 lili 25} 98}

初始化方式如下:
  1. 自动推导类型
  2. 指定初始化成员
 

1.2同名字段


package main

import "fmt"

type person struct {
   id int
   name string
   age int
}

type student struct {
   person
   name string  //同名字段
   score float64
}

func main() {
   var a student=student{person{1,"lili",25},"bob",88}
   fmt.Println(a.name)
   fmt.Println(a.person.name)
}

输出结果:
    bob
    lili
 

1.3指针类型匿名字段



package main

import "fmt"

type person struct {
   id int
   name string
   age int
}

type student struct {
   *person  //匿名字段
   score float64
}

func main() {
   var a student=student{&person{1,"lili",25},98}
   fmt.Println(a)
   fmt.Println(a.name,a.id,a.age,a.score)
}

输出结果:

{0xc0420023e0 98}
lili 1 25 98

另一种初始化方式

package main

import "fmt"

type person struct {
   id int
   name string
   age int
}

type student struct {
   *person  //匿名字段
   score float64
}

func main() {
   var a student
   a.person=new(person)
   a.id=1
   a.name="lili"
   a.age=19
   a.score=99
   fmt.Println(a)
   fmt.Println(a.name,a.id,a.age,a.score)
}

输出结果:

{0xc0420023e0 99}
lili 1 19 99
 

2.方法

 

2.1基本方法创建


package main

import "fmt"

type Interger int

func (a Interger)Test(b Interger) Interger {
   return a+b
}
func main() {
 var result Interger=3
 t:=result.Test(3)
   fmt.Println(t)
}

输出结果:
6

type Integer int :表示的意思是给int类型指定了一个别名叫Integer,别名可以随便起,只要符合GO语言的命名规则就可以。
指定别名后,后面可以用Integer来代替int 来使用。

func (a Integer) Test(b Integer) Integer{
}
 
表示定义了一个方法,方法的定义与函数的区别:

第一:在关键字后面加上( a Integer), 这个在方法中称之为接收者,所谓的接受者就是接收传递过来的第一个参数,然后复制a, a的类型是Integer ,由于Integer是int的别名,所以a的类型为int。

第二:在表示参数的类型时,都使用了对应的别名。

通过方法的定义,可以看出方法其实就是给某个类型绑定的函数。在该demo中,是为整型绑定的函数,只不过在给整型绑定函数(方法)时,一定要通过type来指定一个别名,因为int类型是系统已经规定好了,无法直接绑定函数,所以只能通过别名的方式。

 1/4    1 2 3 4 下一页 尾页

  • 微信扫一扫~
  • 支付宝扫一扫~

很赞哦! ()

上一篇:数据格式

下一篇:Go并发

文章评论

本站推荐