Structure

구조체

Structure

하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 Custom data type

구조체 선언

type person struct {
name string
age int
contact string
}

구조체 객체 생성

객체이름 := 구조체이름{}
객체이름.필드이름 = 저장할값
  • 필드 이름 생략 시 순서대로 저장

  • 필드 이름 명시하면 순서 상관 없음

  • 값 지정안하면 Zero Value를 가짐

CODE
RESULT
CODE
type person struct {
name string
age int
contact string
}
func main() {
//p1
var p1 = person{}
fmt.Println(p1)
p1.name = "mi"
p1.age = 24
p1.contact = "123"
fmt.Println(p1)
//p2
p2 := person{"ryang", 24, "789"}
fmt.Println(p2)
//p3
p3 := person{}
p3.name="someone"
fmt.Println(p3)
p3.name = "jung"
fmt.Println(p3)
}
RESULT
{ 0 }
{mi 24 123}
{ryang 24 789}
{someone 0 }
{jung 0 }

포인터 구조체

  1. 'new(구조체이름)'을 사용하여 객체를 생성

  2. 구조체 이름 앞에 & 붙이기

CODE
RESULT
CODE
type person struct {
name string
age int
contact string
}
//Pass by reference
func addAgeRef(a *person) {
a.age += 5
}
//Pass by value
func addAgeVal(a person) {
a.age += 10
}
func main() {
var p1 = new(person)
var p2 = person{}
fmt.Println(p1, p2)
p1.age = 10
p2.age = 10
addAgeRef(p1)
addAgeVal(p2)
fmt.Println(p1.age)
fmt.Println(p2.age)
//&을 붙이면 pass by reference 가능
addAgeRef(&p2)
fmt.Println(p2.age)
var p3=&person{}
p3.age=20
addAgeRef(p3)
fmt.Println(p3.age)
}
RESULT
&{ 0 } { 0 }
15
10
15
25