golang

golang Struct Embedding

kimbs0301 2024. 7. 5. 17:23

golang은 클래스가 없으므로 타 언어의 상속기능을 제공하지 않습니다.
하지만 구조체 임베딩을 사용하면 상속과 비슷한 효과를 낼 수 있습니다.

 

import (
	"sync"
)

// 임베딩 미사용
type Client struct {
	ClientMutex sync.Mutex
	// ...
}
...
client := Client{}
client.ClientMutex.Lock()
// ...
client.ClientMutex.Unlock()

// 임베딩 사용
type Client struct {
	sync.Mutex
	// ...
}
...
client := Client{};
client.Lock();
// ...
client.Unlock()

 

Client 구조체에서 Mutex의 메서드에 직접 접근이 가능합니다.