go 如何實現的封裝、繼承、和多肽
- 封裝:go通過結首字母大小寫的方式,實現類方法和屬性的公有化和私有化
- 繼承:使用內嵌的方式,對結構體
struct
進行組合 - 多肽:使用
interface
實現
封裝: go中是通過結構體的方法去模擬類
package objects
//通過結構體的方式去模擬類
type User struct {
Id int8
Name string
age int8 //根據首字母方式表現私有 公有
}
//根據方法的首字母的大小寫去判斷是否外部訪問
func (user *User) GetUser() string {
return user.Name + "pl";
}
繼承 我們編寫一個使用者資訊的類。UserInfo 通過 U 繼承了User結構體 通過巢狀實現了類的繼承
type UserInfo struct {
U User //繼承這個Uset結構體
Record string //經歷
stature float32 //身高
Sex int8 //性別
Introduction string //簡介
Avatar string //頭像
}
func (userinfo *UserInfo) GetUserInfo() *UserInfo {
user := new(UserInfo)
user.Avatar ="xxx"
return user
}
多肽實現 完整程式碼
package objects
//通過結構體的方式去模擬類
type UserInterface interface {
GetUserInfo() *UserInfo
}
type User struct {
Id int8
Name string
age int8 //根據首字母方式表現私有 公有
}
//根據方法的首字母的大小寫去判斷是否外部訪問
func (user *User) package objects
//通過結構體的方式去模擬類
type UserInterface interface {
GetUserInfo() *UserInfo
}
type User struct {
Id int8
Name string
age int8 //根據首字母方式表現私有 公有
}
//根據方法的首字母的大小寫去判斷是否外部訪問
func (user *User) GetUser() string {
return user.Name + "pl";
}
type UserInfo struct {
U User //繼承這個Uset結構體
Record string //經歷
stature float32 //身高
Sex int8 //性別
Introduction string //簡介
Avatar string //頭像
}
func (userinfo *UserInfo) GetUserInfo() *UserInfo {
user := new(UserInfo)
user.Avatar ="xxx"
return user
}
type UserInfo struct {
U User //繼承這個Uset結構體
Record string //經歷
stature float32 //身高
Sex int8 //性別
Introduction string //簡介
Avatar string //頭像
}
func (userinfo *UserInfo) GetUserInfo() *UserInfo {
user := new(UserInfo)
user.Avatar ="xxx"
return user
}
如上程式碼所示:UserInfo
結構體繼承了UserInterface
介面 並實現了GetUserInfo()
的方法
我們來實現列印一下這個方法GetUserInfo
編寫main.go
入口檔案
package main
import (
"fmt"
//類似於php的名稱空間 引入
"object/objects"
)
func main(){
//例項化這個結構體
user :=new(objects.UserInfo)
//引用這個結構體對應的方法 並列印它
fmt.Println(user.GetUserInfo())
}
執行go run main.go
如圖執行成功(注意程式碼1片段和程式碼2片段是在object目錄下的同一個檔案)
本作品採用《CC 協議》,轉載必須註明作者和本文連結