---
# System prepended metadata

title: 結構 Struct
tags: [Golang]

---

###### tags: `Golang`
# 結構 Struct

## 基本結構
```go=
type data struct{
    name string
    age int
}

func main(){
user1 := data{"mask",21}
fmt.Println(user1)
// {mask 21}
}
```

## new()
```go=
type data struct{
    name string
    age int
}

func main(){
user1 := new(data)
user1.name="mask"
user1.age = 22
fmt.Println(*user1)
// {mask 22}
}
```

## 結構與指標
當需要傳遞結構給函式更動時，直接傳遞是無法修改資料的，此時需要使用指標，
使程式直接對記憶體位址上的值進行更動。
```go=
type user struct {
	name string
	age  int
}

func main() {
	var mask = &user{"mask", 21}    //mask儲存的是記憶體位址
	fmt.Println(*mask)
	cha(mask)                       //傳記憶體位址給cha
	fmt.Println(*mask)
}

func cha(h *user) {                // 宣告h指標接收記憶體位址
	h.name = "An"
	h.age = 23
}
// {mask 21}
// {An 23}
```