Option과 default parameter

option option 패키지는 직전 포스트에 작성한 result 패키지에서 에러 메시지가 빠진 형태입니다. 구조체 type Option[T any] struct { value any } func Some[T any](value T) *Option[T] { return &Option[T]{value: value} } func None[T any]() *Option[T] { return &Option[T]{value: nil} } 구조체는 result와같이 any 타입을 가진 멤버 하나만 존재합니다. Some 생성자는 인자의 타입에 따른 Option 구조체를 생성하고 멤버 변수에 인자를 대입합니다. None 생성자는 타입 인자만 하나 받으며 해당 타입에 대한 Option 구조체를 반환하지만 멤버 변수는 nil이 대입됩니다....

December 30, 2021 · snowmerak

Result를 활용한 에러처리

이 글은 제가 작성한 레포인 generics-for-go를 기반으로 쓰여졌습니다. 개요 예전 고 1.18 dev 버전이 나왔을 때 한 레포를 만들어서 제네릭 관련 함수를 찍어낸 적이 있습니다. 그 이후 한동안 잊고 지내다가 1.18 beta가 나오게 되고 이제 큰 피처의 변화는 없을 거라 판단해서 제네릭으로 몇가지 장난을 하던 도중, 러스트같은 언어에서 자주 보이는 Option과 Result를 만들어 보고 싶었습니다. 예전에도 당연히 interface{}만으로 구현에 도전해봤지만 사실 타입 단언(Type Assertion)을 해야한다는 것에서 그다지 사용성이 좋지 못 했고 이로 인해 코드 수만 늘어났습니다....

December 30, 2021 · snowmerak