# struct

여러 필드를 묶어서 하나의 구조(Structure)를 만듭니다.

```go
type Student struct {
  name  string
  age   int
  grade int
}

var a student -> 기본값으로 초기화

a.age = "10"
```

* 전체 초기화

```go
var a student = student{"xx",28}
```

* 일부 초기화

```go
var a student = student{name:"xx"}
```

* 구조체가 다른 구조체를 포함할 수 있다.
* field명을 생략하면 .을 한번으로 줄일수 있다.

## memory padding

* 8 byte보다 작은 필드는 8byte끼리 몰아서 배치하자.
* 작은것부터 큰것순으로 하면된다.

## 정리

* 함수 : 코드의 응집도를 올려주고 재사용성을 높여준다.
* 배열 : 같은 타입의 데이터 응집도를 올려주고 재사용성을 높여준다.
* 구조체 : 관련 데이터를 묶어서 응집도를 올려주고 재사용성을 높여준다.
