category

Suggestions

13개의 글

고랭과 아레나

Arena?

Arena? 고랭은 가비지 컬렉터를 쓰는 언어이고, 덕분에 사용자는 메모리를 관리하는 데에 크게 신경을 쓸 필요가 없습니다. 하지만 프로젝트 크기가 커지고, 사용해야할 힙 메모리가 커질수록 더욱 빈번하게, 그리고 한번에 많은 양의 메모리를 수집하여 처리하게 됩니다. 하나의 기능을 수행하고 난 후에는 물론이고, 수행하는 도중에도 GC가 동작하여 응답이 늦어지는 상황이 생겨날 확률이 늘어납니다. 그런 상황에서 유용하게 쓸 수 있는 …

enum in go

이 페이지의 고 코드는 제네릭이 포함되어 있습니다.

enum?

enum? 고에서 열거형은 아래의 단순한 형태, 혹은 조금의 변형으로밖에 작성되지 않습니다. package week const ( Monday = iota Tuesday Wednesday Thursday Friday Saturday Sunday ) 단순하게 week 패키지 내에서 상수를 선언하여 가져다 쓰는 정도입니다. 하지만 그건 어디까지나 열거형을 위한 패키지를 분리하지 않았기에 제한되는 방식이라 생각합니다. package …

고루틴 풀링

왜?

이 글은 제 레포를 기반으로 작성되었습니다. 왜? 오픈톡방에서 고루틴에 대한 이야기가 나왔었습니다. 고루틴을 안전하게 관리하기 위한 보일러플레이트에 대한 것과 join과 반환값의 처리에 대한 것이었습니다. 그래서 한번 해당 건에 대해 나름의 해답을 라이브러리로 만들어봤습니다. gopool GoPool type GoPool struct { pool sync.Pool max int64 count int64 running int64 …

Option과 default parameter

option

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를 활용한 에러처리

개요

이 글은 제가 작성한 레포인 generics-for-go를 기반으로 쓰여졌습니다. 개요 예전 고 1.18 dev 버전이 나왔을 때 한 레포를 만들어서 제네릭 관련 함수를 찍어낸 적이 있습니다. 그 이후 한동안 잊고 지내다가 1.18 beta가 나오게 되고 이제 큰 피처의 변화는 없을 거라 판단해서 제네릭으로 몇가지 장난을 하던 도중, 러스트같은 언어에서 자주 보이는 Option과 Result를 만들어 보고 싶었습니다. 예전에도 …