Skip to content

Standard Library

kimjooyoon edited this page Oct 8, 2026 · 3 revisions

Gooo 함수 가져다 쓰기

업데이트: 2026-10-08 KST.

gooo-standard-library는 Gooo로 작성한 작은 함수 모음입니다. 앱마다 범위 계산과 문자열 처리를 다시 쓰는 대신 같은 함수를 가져다 쓰려는 출발점입니다. 0.1.1 실험판의 소스는 78934d6입니다. 공개 Gooo 0.6.11을 사용하며 패키지 이름과 import를 Gooo 소스에서 읽습니다. 병합 소스 CI도 통과했습니다.

패키지 들어 있는 함수
std/numbers Min, Max, Clamp, AbsSaturating, Sign, IsZero, InRange, NonNegative
std/logic And, Or, Not
std/text Coalesce, Choose, HasPrefix, HasSuffix, StripSuffix, ByteLength

Clamp와 InRange는 뒤집힌 두 경계를 정렬합니다. 길이와 자르기 연산의 단위는 UTF-8 바이트이며 Text 입력은 현재 1,024바이트까지입니다. 각 함수의 구현은 Gooo 소스에 있습니다.

먼저 작은 앱을 실행해 보기

Go 1.27.1과 Gooo 0.6.11 개발판을 준비하고 라이브러리 저장소 루트에서 실행합니다.

go run ./cmd/preview --title '한글 예제' --budget 20 --out out/preview
{"available":true,"bytes":13,"title":"한글 예제"}

한글 제목은 공백을 포함해 13바이트입니다. 예제는 원문과 예산이 있는지 판단하고, 빈 제목에 대체값을 넣고, 사용할 수 있는 바이트 수를 계산합니다. 제목 자체를 자르지는 않습니다. 이 계산과 조건은 세 Gooo 패키지와 예제의 Gooo 본문이 맡습니다. Go 명령은 입력을 전달하고 반환된 값을 보여줍니다.

같은 프로그램에 다른 입력을 주려면:

go run ./cmd/preview --title '' --budget 1 \
  --receipt out/preview/execution.json --out out/reused

빈 제목에는 untitled가 들어가고, 사용 여부는 false, 바이트 예산은 1이 됩니다. 전체 실행 기록은 각각의 새 출력 폴더에 남습니다. 처음 조립할 때 --model로 자체 모델을 연결할 수 있고, 저장한 프로그램을 쓸 때는 새 추론이 없습니다. 모델을 생략하면 선언된 후보를 고정 순서로 살펴봅니다.

함수와 조립이 만나는 자리

예제는 numbers.Clamp, text.Coalesce, logic.And 등을 불러 지역값을 계산합니다. 결과의 세 필드에는 기본값과 계산한 값 중 하나를 연결할 수 있습니다. 작은 모델은 그 여덟 조합의 순서를 추천하고 Gooo는 소스에 적힌 다섯 사례로 확인합니다. 선언한 패키지와 import는 작업공간 명세에 연결됩니다.

현재 배포는 패키지 이름과 import를 Gooo 파일에서 읽는 구성을 사용합니다. 같은 라이브러리와 모델로 반복 설정을 뺀 구성을 실행해 결과를 대조했습니다. 이전 0.1.0은 명시형 설정을 사용했습니다. 그 버전의 저장 기록은 원래 태그에서 재실행하거나 새 구성에서 한 번 다시 조립합니다.

배포 단위는 버전을 고정한 Gooo 소스와 작업공간 명세입니다. 다른 앱에서도 사용할 파일을 명세에 등록하고 같은 안정 타입 ID로 인수를 연결합니다. 전체 구성은 예제 원본에서 볼 수 있습니다.

실제로 확인한 범위

17개 함수의 명시한 입력 79건과 저장 재실행이 맞았습니다. 같은 숫자가 서로 다른 함수에서 쓰인 경우를 포함한 함수별 입력 수입니다. 예제 앱은 하나이며, 조립용 다섯 사례와 겹치지 않는 별도 입력 열 개를 후보 한도 1·2·4·8에서 실행했습니다.

후보 한도 고정 순서: 맞힌 입력 / 필드 자체 모델: 맞힌 입력 / 필드
1 1/10 · 14/30 1/10 · 14/30
2 1/10 · 20/30 3/10 · 17/30
4 3/10 · 23/30 4/10 · 24/30
8 10/10 · 30/30 10/10 · 30/30

이번에는 두 방식 모두 여덟 후보가 필요했습니다. 모델이 두 후보 안에서 더 많은 입력을 맞혔지만 맞힌 필드는 적었습니다. 한 숫자로 줄이면 이런 차이를 놓칩니다. 미완성 프로그램의 실제 결과도 저장 재실행에서 같았습니다.

모델은 이전 파일명·나눗셈·재시도 자료로 학습한 것을 그대로 썼습니다. 함수와 평가 입력을 먼저 고정하고 실행했습니다. 로컬 macOS와 공개 Linux CI의 요약 25개, 원본 관측 52개에서 입력·실제 값·기대값·생성 코드·재실행 결과가 같았습니다. 같은 프로그램을 여러 한도에서 반복한 관측으로 셉니다.

동결 계획·초기 원본 · Linux와 직접 사용 기록 · 처음 공개한 CI.

후속 실행 명령의 Linux 원본은 위키 보관 기록에 있습니다.

0.1.1에서도 공개 0.6.11의 macOS·Linux 결과를 같은 방법으로 대조했습니다. 함수별 입력 79건과 앱의 부분 결과·생성 코드·저장 재실행이 유지됐습니다. 배포 버전 적용과 CI 원본.

Gooo

배우기

직접 다뤄 보기

원리와 개발

공개 코드와 모델

Clone this wiki locally