go學習-struct

初始化

package main

import (
	"fmt"
)

type person struct {
	Name string
	Age  int
}

func main() {
	a := person{
		Name: "cll",
		Age:  10,
	}
	a.Name = "cll2"
	a.Age = 20
	fmt.Println(a)
}

struct是值類型,函數傳參是值傳遞

package main


import (
	"fmt"
)


type person struct {
	Name string
	Age  int
}


func main() {
	a := person{
		Name: "cll",
		Age:  10,
	}
	fmt.Println(a)
	A(a)
	fmt.Println(a)
	B(&a)
	fmt.Println(a)
}


func A(p person) {
	p.Age = 20
}


func B(p *person) {
	p.Age = 20
}

組合(嵌入)

package main


import (
	"fmt"
)


type human struct {
	Sex int
}


type teacher struct {
	human
	Name string
	Age  int
}


type student struct {
	human
	Name string
	Age  int
}


func main() {
	a := teacher{Name: "jjj", Age: 20, human: human{Sex: 1}}
	b := student{Name: "kkk", Age: 10, human: human{Sex: 0}}
	a.Sex = 3
	fmt.Println(a, b)
}

匿名結構

package main

import (
	"fmt"
)

func main() {
	a := &struct {
		Name string
		Age  int
	}{
		Name: "cll",
		Age:  10,
	}
	fmt.Println(a)
}

結構的比較

1、new 得到是結構的引用,{}得到是結構的值

2、結構的值的比較,比較結構的類型和值

package main

import (
	"fmt"
)

type Dog struct {
	name string
}

func main() {
	d1 := Dog{name: "1"}
	d2 := Dog{name: "1"}
	fmt.Println(d1 == d2)

	d3 := Dog{name: "11"}
	d4 := Dog{name: "22"}
	fmt.Println(d3 == d4)
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章