1. 程式人生 > 其它 >Go-simple(8)面向物件

Go-simple(8)面向物件

技術標籤:Gogo

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