Go 範例:結構

Go 的結構是欄位的類型化集合。它們用於將資料分組在一起以形成記錄。

package main
import "fmt"

這個 person 結構類型有 nameage 欄位。

type person struct {
    name string
    age  int
}

newPerson 建立一個具有給定名稱的新 person 結構。

func newPerson(name string) *person {

你可以安全地傳回指向本機變數的指標,因為本機變數會在函式的範圍內存活。

    p := person{name: name}
    p.age = 42
    return &p
}
func main() {

這個語法會建立一個新的結構。

    fmt.Println(person{"Bob", 20})

你可以在初始化結構時命名欄位。

    fmt.Println(person{name: "Alice", age: 30})

省略的欄位會是 0 值。

    fmt.Println(person{name: "Fred"})

一個 & 的前綴會 menghasilkan 指標到結構。

    fmt.Println(&person{name: "Ann", age: 40})

將新的結構的建立封裝到建構式函式中是慣例

    fmt.Println(newPerson("Jon"))

以一個點來取得結構欄位。

    s := person{name: "Sean", age: 50}
    fmt.Println(s.name)

你也可以在結構指標中使用點 - 指標會自動解參考。

    sp := &s
    fmt.Println(sp.age)

結構是可以變更。

    sp.age = 51
    fmt.Println(sp.age)

如果一個結構類型只使用在一個單一值,我們不需要賦予它一個名稱。這個值可以有一個匿名的結構類型。這個技巧普遍用於 表格驅動測試

    dog := struct {
        name   string
        isGood bool
    }{
        "Rex",
        true,
    }
    fmt.Println(dog)
}
$ go run structs.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
&{Jon 42}
Sean
50
51
{Rex true}

下一個範例: 方法