【GoLang】GoLang struct 使用


代碼示例:

package main

import "fmt"

type Human struct {
    name   string
    age    int
    weight int
}

type Student struct {
    Human      // 匿名字段,那么默認Student就包含了Human的所有字段
    speciality string
}

func main() {
    // 我們初始化一個學生
    mark := Student{Human{"Mark", 25, 120}, "Computer Science"}

    // 我們訪問相應的字段
    fmt.Println("His name is ", mark.name)
    fmt.Println("His age is ", mark.age)
    fmt.Println("His weight is ", mark.weight)
    fmt.Println("His speciality is ", mark.speciality)
    // 修改對應的備注信息
    mark.speciality = "AI"
    fmt.Println("Mark changed his speciality")
    fmt.Println("His speciality is ", mark.speciality)
    // 修改他的年齡信息
    fmt.Println("Mark become old")
    mark.age = 46
    fmt.Println("His age is", mark.age)
    // 修改他的體重信息
    fmt.Println("Mark is not an athlet anymore")
    mark.weight += 60
    fmt.Println("His weight is", mark.weight)

    mark.Human = Human{"aaa", 20, 123}
    mark.Human.age += 10
    fmt.Println(mark)
}

 

 

 

004.struct類型
1 type聲明新類型
1.1 type testInt func(int) bool // 聲明了一個函數類型
1.2 type person struct //聲明一個結構體類型
1.3 struct與array一樣是值類型,作為參數會copy完整數據; slice、map、channel等傳遞的是數據的內存地址
2 初始化
2.1 順序初始化
2.1.1 var p Person = Person{"aaa", 123}
2.2 指定參數初始化
2.2.1 p = Person{name: "test", age: 456}
2.3 new指針初始化
2.3.1 var pp *Person = new(Person)
3 匿名訪問
3.1 組合關系的struct可以直接通過被繼承字段訪問
3.2 也可以通過struct名稱訪問
3.3 struct不僅僅能夠將struct作為匿名字段、自定義類型、內置類型都可以作為匿名字段, 而且可以在相應的字段上面進行函數操作
3.4 允許我們去重載通過匿名字段繼承的一些字段, 當然如果我們想訪問重載后對應匿名類型里面的字段,可以通過匿名字段名來訪問
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM