ksundev 님의 블로그

[예제] Bank Project - 1 본문

[개발] Go/초급 프로젝트

[예제] Bank Project - 1

ksundev 2025. 6. 10. 19:30

# 계좌 예제

type Account struct {
	// private members
	owner   string
	balance int
}

계좌의 구성요소가 <소유주>, <잔액> 로 이루어져 있고 이를 private 하게 관리하고 싶다고 하자.

 

이제 이것을 간접적으로 접근할 수 있게 하는 이른바 getter/setter를 만들어보자.

# NewAccount()

func NewAccount(owner string) *Account {
	return &Account{
		owner:   owner,
		balance: 0,
	}
}

여기서 보이는 *과 &은 이전에 다뤘던 pointer의 개념이다. 조금 헷갈릴 수도 있는데 차근차근 살펴보자.

  1. Account{...}는 새로운 Account 구조체를 메모리에 생성한다.
  2. 예를 들어 0x1040a123 에 구조체가 만들어진다.
  3. &Account에서 &가 그 구조체의 메모리 주소를 가져온다.
  4. *Account라는 return type을 명시해주는 부분은 포인터 타입임을 의미한다.
  5. 왜 &Account 가 반환타입이 아니고 *Account인지는 명확히 구분할 수 있어야 한다.
    • &Account는 실제 주소값을 의미.
    • *Account는 포인터 타입을 의미하며, Account구조체의 주소를 담는 변수를 반환한다는 뜻이다.
왜 포인터를 사용할까? 답은 스스로 생각해보자. (대학교 교재식...ㅋㅋ)

여기까지의 내용을 코드로 살펴보자.

'[개발] Go > 초급 프로젝트' 카테고리의 다른 글

Dictionary 예제 - Update, Delete  (0) 2025.06.26
Dictionary 예제 - Search, Add  (0) 2025.06.25
[예제] Bank Project - 3  (0) 2025.06.14
[예제] Bank Project - 2 (Method)  (0) 2025.06.10