Go-simple(8)面向物件
阿新 • • 發佈:2020-12-27
1 結構體struct
首先定義結構體,程式碼如下:
type User struct {
id float32 // id
name string // 姓名
password string // 密碼
sex int // 性別
}
建立匿名結構體,程式碼如下:
fmt.Print(User{1, "令狐沖", "123456", 1})
輸出:
宣告和初始化結構體,程式碼如下:
// 宣告結構體
var user User
// 修改結構體成員
user.id = 2
user.name = "任盈盈"
fmt.Printf("ID : %f\n", user.id)
fmt.Printf("姓名 : %s\n", user.name)
fmt.Printf("密碼 : %s\n", user.password)
fmt.Printf("性別 : %d\n", user.sex)
輸出:
定義一個結構體Student巢狀上面的結構體User,實現面向物件繼承的特性,程式碼如下:
//巢狀struct 實現繼承
type Student struct {
user User
school string
grade string
}
測試巢狀結構體的程式碼如下:
var user User
user.id = 2
user.name = "任盈盈"
var student Student
student.user = user
student.school="中華女子武術學校"
fmt.Println("姓名:",student.user.name)
fmt.Print("就讀學校:",student.school)
輸出:
仿造結構體的建構函式,程式碼如下:
/*
模擬結構體的建構函式
*/
func NewUserById (id float32, name string) *User {
return &User{
id: id,
name: name,
password: "",
sex: 0,
}
}
呼叫上面的函式,程式碼如下:
var user *User
var id float32 = 12
user = NewUserById(id, "令狐沖")
fmt.Print(user)
輸出:
2 介面interface
定義介面和實現介面的程式碼如下:
// 第1步:定義介面
type Animal interface {
name()
}
// 第2步:定義struct 用於給介面賦值
type Dog struct {
}
// 第3步:實現介面
func (dog Dog) name() {
fmt.Print("我是一條可愛的小狗!")
}
測試介面的程式碼如下:
var animal Animal
animal = new(Dog)
animal.name()
輸出:
詳見程式碼:https://github.com/linghufeixia/go-simple/tree/master/chapter3