結構體
結構體定義
- 只要是型別都可以定義到結構體中,方法也是型別,結構體也是型別
##介面
- 在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 協議》,轉載必須註明作者和本文連結