我的 golang 学习笔记系列三:结构体和接口

结构体

结构体定义

  • 只要是类型都可以定义到结构体中,方法也是类型,结构体也是类型

##接口

  • 在go 接口中,只要结构体实现接口中的方法(参数和返回值都相同,注意:是实现该接口的所有方法才算实现这个接口),就相当于实现了这个接口

练习代码

package main

import "fmt"

func main() {
    user := NewUser(111,"刘先生",302,"上海市")
    // 获取刘先生的地址信息
    user.Address.GetProvinceAndId()


    // 获取订单金额
    wechat := &Wechat{}
    wechatPrice := kkk(wechat,111)
    aliPay := &AliPay{}
    aliPayPrice := kkk(aliPay,111)

    fmt.Println("微信的价格为:",wechatPrice,"支付宝的价格为:",aliPayPrice)

}

// User 结构体
type User struct {
    ID int
    Name string
    Address Address
}


// NewUser 结构体 USer 构造方法
func NewUser(id int,name string,addressId int,addressProvince string) *User {
    return &User{
        ID: id,
        Name:    name,
        Address: Address{
            ID: addressId,
            Province: addressProvince,
        },
    }
}

// Address 地址结构体
type Address struct {
    ID int
    Province string
}

// GetProvinceAndId 获取城市信息
func (a Address) GetProvinceAndId() {
    fmt.Println("城市ID为:",a.ID,"城市名称为:",a.Province)
}



// Pay 定义一个接口  接口只对结构体有效
type Pay interface {
    Order(n int) int   // 方法名称  此处只需要名称 参数 返回值
}

// 结构体软继承一个方法

type Wechat struct {
    Pay string
}

// Order 继承接口
func (w Wechat) Order(n int) int {
    return 300
}

type AliPay struct {
    Pay string
}

// Order 继承接口
func (a AliPay) Order(n int) int {
    return 200
}

// 获取订单金额
func kkk(pay Pay,id int) int {
    return pay.Order(id)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!