14. 面向对象

来源:互联网 发布:pscc2017 mac版本下载 编辑:程序博客网 时间:2024/06/05 08:02

1.面向对象
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

  1. 值语义和引用语义
    值语义:
    这里写图片描述

引用语义:
这里写图片描述
这里写图片描述
这里写图片描述

结构初始化:type Rect struct {    x,y float64    width,height float64}func (r *Rect) Area() float64 {    return r.height * r.width}rect1 := new(Rect)    rect2 := &Rect{}    rect3 := &Rect{0,0,100,200}    rect4 := &Rect{width:111,height:222}    fmt.Println(*rect1)    fmt.Println(rect2)    fmt.Println(rect3)    fmt.Println(rect4)
匿名组合(继承):package mainimport (    "fmt")type Base struct {    Name string}func (base *Base) Foo() {    fmt.Println("Foo")}func (base *Base) Bar(){    fmt.Println("bar.Bar")}type Foo struct {    Base}func (foo *Foo) Bar() {    fmt.Println("foo.bar")    //foo.Base.Bar()}func main() {    //var base =  new(Base)    //base.Name = "base_name"    //fmt.Println(base.Name)    var foo = new(Foo)     foo.Base.Bar()    foo.Bar()}

这里写图片描述
这里写图片描述
这里写图片描述

package mainimport (    "fmt")type Base struct {    Name string}func (base *Base) Foo() {    fmt.Println("base.Foo()")}func (base Base) Bar() {    fmt.Println("base.Bar()")}type AA struct {    Base}func main() {    var a = AA{} // 值    a.Foo()    a.Bar()    var b = new(AA) //指针    b.Foo()    b.Bar()}____________________________________type AA struct {    Base}与的区别 :type AA struct {    *Base}1.如果为嵌入类型为 Base ,a 和 b 的方法集都包含接受者为 Base 的方法提升a = new(AA) // 指针b = AA() // 值类型2.如果为嵌入类型为 *Base     //var a = AA{} // 值    //a.Foo() // true    //a.Bar() // false    var b = new(AA) //指针    //b.Foo() // true    b.Bar() // false

https://segmentfault.com/q/1010000002687684/a-1020000002688273


2.接口
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

接口赋值:

原创粉丝点击