Go

Go Structors 패턴, Go Exception(고는 에러처리를 못해?!!? 궁금하면 들어오쇼)

로니콜먼 2023. 1. 30. 20:26

 

Go에서 흔히 쓰이는 패턴 중 하나 make constructors 

http://www.golangpatterns.info/object-oriented/constructors

 

Constructors - Go Language Patterns

Design patterns for the Go programming language (golang), including object-oriented, functional, and concurrent programming patterns. Learn how to implement iterators, futures, semaphores, and other high-level programming devices from Go's goroutines, chan

www.golangpatterns.info

우리가 흔히 아는 생성자와 비슷하다

작성하는 방식은 다음과 같다.

위와 같이 생성하여

구조체를 만들 수 있다.

 

그렇다면

위와같이 Deposit 이라는 함수를 작성하면 

만들어낸 Account라는 생성자의 값을 깎을 수 있을까?

답은 아니다. go에서는 매개변수로 Account를 받아왔을때 복사본을 만들어버린다.

이점은 어려움이나 귀찮음을 불러오지만 보안에는 강하다는 장점이 있다.

 

그래서 우리는 포인터를 사용해야한다.

매개변수에 a Account에 주소값을 호출하여

원 stcut의 값을 바꿔준다.

어떻게 하느냐

 

이렇게 별하나만 붙여주란 말이다.

그러면 go는 천재라서 알아서 Account의 주소값을 찾아서 값을 바꾼다.

이렇게 Withdraw함수도 만들고 값을 깎아주는 Deposit 함수도 만든다.

 

그럼이제 플마(+, -) 다 가능하다 ~~~

이렇게 +10, -20하는 로직을 메인에서 처리해본다.

 

그러면 10이됐다가 -10이 된다.

엥 근데 현실에서 마이너스면 대출이다.

내 가게에서는  외상이란 말이다

나는 외상 손님 ? 허락하지 않는다.

수고하세요 에러를 뱉어줘야한다.

 

에러처리 어떻게 하지?

자바처럼 try-catch를 때려넣으면 되나??

 

절대안됨

 

[에러처리] : GO에서는 에러를 처리할 수 없다.

우리가 기존에 알고 있던 Javascript나 Python의 try-exception, try-catch가 없다는 말씀

엥? 그러면 에러 투성이인 코드를 갖고 살아가야하나!?

 

노노

그냥 직접 처리해주면됨

귀찮아졌지만 나에게는 매우좋다. 모든 것에대한 에러를 내멋대로 커스텀할 수 있다는 말인가

멋지다~

 

보셈 이렇게 처리하면

깔끔하게 처리가능

 

여기까지

go의 struct와 exception처리에 대해서 배웠다.

알차다