y0u_bat

[Go언어] 7. 구조체 본문

프로그래밍/Go언어

[Go언어] 7. 구조체

유뱃 2016. 1. 8. 20:30

구조체


type Game struct {

name string

level int

}


구조체 인스턴스 생성방법

var v1 Game

var v2 *Game // 구조체 포인터 선언

v2 = new(Game) // 구조체 포인터에 메모리 할당

v3 := new(Game) // 동시에 선언과 할당


구조체 인스턴스 생성할때 값 초기화

var v1 Game = Game{"admin",10}

v2 := Game{"admin2",20}

v3 := Game{name:"admin3",level:30}


v1.name = "admin4"

v1.level = 10 


이런식으로 . 으로 구조체 인스턴스의 필드에 접근 가능




구조체에 메서드 연결


type Game struct {

hp int

mp int

}


func (f *Game) game() {    // 만약에 *Game에서 * 안붙이면 복사하는거라 값이 구조체에 있는 값이 안변함

f.hp = 100

f.mp = 200

}


func main() {

f := Game{50,50}

f.game()

fmt.Println(f)

}


결과: {100,200} 



구조체 임베딩


Go에는 상속이 존재하지 않는데 임베딩을 하면 상속과 같은 효과를 낼수있다.


type Game struct {

s User_info

a int

b int

}

type User_info struct {

name string

level int

hp int

mp int

}


func (f *User_info) test() {

f.name = "test"

f.level = 255

f.hp = 100

f.mp = 100

}


func main() {

var t Game

t.s.test()

fmt.Println(t)

}


결과: {{test 255 100 100} 0 0}

'프로그래밍 > Go언어' 카테고리의 다른 글

[Go언어] 9. 고루틴 (쓰레드?)  (0) 2016.01.11
[Go언어] 8. 인터페이스  (0) 2016.01.10
[Go언어] 6. 포인터  (0) 2016.01.08
[Go언어] 5. 클로저,지연호출,패닉과 복구  (0) 2016.01.08
[Go언어] 4. 함수  (0) 2016.01.08
Comments