Go Structors 패턴, Go Exception(고는 에러처리를 못해?!!? 궁금하면 들어오쇼)
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처리에 대해서 배웠다.
알차다