Skip to content

实践面向对象

封装

package oop

type UserInfo struct {
    Name      string
    Age       int
    Height    float32
    Eduschool string
    Hobby     []string
    MoreInfo  map[string]interface{}
}

func NewUserInfo(name string, age int, height float32, Eduschool string, hobby []string,
    MoreInfo map[string]interface{}) *UserInfo {
    return &UserInfo{
        Name:      "",
        Age:       0,
        Height:    123,
        Eduschool: "加州理工学院",
        Hobby:     []string{"music", "basketball"},
        MoreInfo:  nil,
    }
}

继承

1
2
3
4
5
6
7
8
package oop

type PaymentArgs struct {
    AppID       string
    MchID       string
    Key         string
    CallbackUrl string
}
1
2
3
4
5
6
package oop

type PaymentWx struct {
    PaymentArgs
    WeiXinOpenId string
}
package main

func main() {
    weixinpay := &oop.PaymentWx{
        PaymentArgs: oop.PaymentArgs{
            AppID       : "123"
            MchID       : "321"
            Key         : "111"
            CallbackUrl : "222"
        },
        WeiXinOpenId    : "1231",
    }
}

多态

// 多态
// type 接口名 interface {
//  方法名1 (参数列表) (返回值)
//  方法名2 (参数列表) (返回值)
//  方法名3 (参数列表) (返回值)
//  ...
// }

// 方法接收者
// type T struct {

// }
// type TT string
// func (this *T)方法名1() {

// }
// func (this *T)方法名2() {

// }
// func (this *T)方法名3() {

// }

    // 接口的说明:
        // 定义接口时,方法不能实现
        // 一个类型如果实现了接口中所有的方法,我们就说这种类型实现接口,不仅仅是结构体,也可以是内置类型


type pay interface {
    A()
    B()
}

type payment struct {
    paymentdata string
}

func (this *payment)A() {

}

func (this *payment)B() {

}