我的 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 协议》,转载必须注明作者和本文链接