본문 바로가기

panic3

Exception - 출처: https://dave.cheney.net/2012/01/18/why-go-gets-exceptions-right - History C는 단일값을 반환하는 구조였기 때문에 함수 실행과정에서 문제가 생겼을 때 이를 파악하는 과정이 복잡했다. 물론 이런 문제를 다루기 위한 프로그래밍 스킬들이 있었다. 예를 들면 구조체의 내용을 변경하는 함수에 포인터를 넘겨주면 반환된 코드가 해당 작업을 성공했는지를 나타내는것과 같은 방식이다. 다른 스킬들도 있지만 이 글에서 다루고자하는 중심적인 얘기는 아니므로 넘어가겠다. C++이 되면서 error를 다루는 작업이 진화했다. 어떤 함수가 값을 반환하거나 exception을 던지면 이를 잡아서 다루는게 가능해졌다. C++ 프로그래머들은 error 상황을 함수가 반.. 2022. 6. 14.
Effective Go - Errors - 출처: https://go.dev/doc/effective_go#errors - Errors 라이브러리 함수들을 사용하다보면 호출자에게 오류를 반환하는 경우를 본적이 있을것이다. Go의 다중 값 반환을 이용하면 일반적인 반환 값과 함께 자세한 error도 같이 반환할 수 있다. 자세한 error 정보를 반환하기 위해 다중 값 반환을 사용하는것은 좋은 습관이다. 예를 들어 os.Open은 실패시 nil pointer만 반환하지 않고 무엇이 잘못되었는지를 기술하는 error 값도 같이 반환한다. Convention에 의해 error 들은 간단한 빌트인 인터페이스인 error type을 갖는다. type error interface { Error() string } 라이브러리 작성자는 풍부한 모델을 사용.. 2022. 6. 5.
Go - maps - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/maps - 개요 array와 slice에서는 데이터를 순차적으로 저장한다. go에서는 key를 기반으로 데이터를 저장할 수 있는 map을 제공한다. dictionary를 만들어 보면서 map에 대해 알아보도록 하자. - map package main import "testing" func TestSearch(t *testing.T) { dictionary := map[string]string{"test": "this is just a test"} got := Search(dictionary, "test") want := "this is just a test" if got != want .. 2021. 12. 31.