y0u_bat
[Go언어] 7. 구조체 본문
구조체
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 |