Donggo

JavaScript 스타일의 함수들을 Go 언어에서 사용하세요. 함수형 프로그래밍과 유틸리티 함수들을 Go에서도 편리하게 사용할 수 있습니다.

코드 플레이그라운드

Donggo의 함수들을 직접 실행해보세요.

실행 결과

문서

Donggo의 모든 함수와 사용법을 확인하세요.

목차

Array Functions

Object Functions

JSON Functions

HTTP Client

Pipeline Functions

Array Functions

Contains[T any]

배열에 특정 값이 포함되어 있는지 검사합니다.

arr := []int{1, 2, 3, 4, 5}
result := Contains(arr, 3)  // true

strArr := []string{"apple", "banana", "orange"}
result = Contains(strArr, "banana")  // true

Object Functions

OKeys[T any]

객체의 키 목록을 반환합니다.

m := map[string]int{
    "apple":  1,
    "banana": 2,
    "orange": 3,
}
keys := OKeys(m)  // []string{"apple", "banana", "orange"}

OValues[T any]

객체의 값 목록을 반환합니다.

m := map[string]int{
    "a": 1,
    "b": 2,
    "c": 3,
}
values := OValues(m)  // []int{1, 2, 3}

OEntries[T any]

객체의 키-값 쌍을 반환합니다.

m := map[string]int{
    "a": 1,
    "b": 2,
}
entries := OEntries(m)  // [][]any{{"a", 1}, {"b", 2}}

JSON Functions

JsonStringify[T any]

JavaScript의 JSON.stringify와 동일한 기능을 수행합니다. 객체를 JSON 문자열로 변환합니다.

data := map[string]interface{}{"name": "John", "age": 30}
jsonStr, err := JsonStringify(data)
// jsonStr: `{"name":"John","age":30}`

JsonParse[T any]

JavaScript의 JSON.parse와 동일한 기능을 수행합니다. JSON 문자열을 객체로 변환합니다.

jsonStr := `{"name":"John","age":30}`
var result map[string]interface{}
err := JsonParse(jsonStr, &result)

HTTP Client

Axios[T, Res any]

타입 안전한 HTTP 요청/응답을 처리합니다.

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

var user User
status, err := Axios[struct{}, User](
    struct{}{},
    WithURL("https://api.example.com/users/1"),
    WithMethod("GET"),
)

Pipeline Functions

Pipe[T any]

기본 파이프라인 함수로, 데이터 변환을 선언적으로 작성할 수 있습니다.

result := Pipe("hello world",
    strings.ToUpper,
    func(s string) string { return strings.ReplaceAll(s, " ", "_") },
)  // "HELLO_WORLD"

PipeWithError[T any]

에러 처리가 가능한 파이프라인입니다.

type User struct {
    Name string
    Age  int
}

user, err := PipeWithError(User{Name: "홍길동", Age: 30},
    func(u User) (User, error) {
        if u.Age < 0 {
            return u, fmt.Errorf("나이는 음수일 수 없습니다")
        }
        return u, nil
    },
)

PipeWiths

타입 변환이 가능한 파이프라인입니다.

result := PipeWiths(42,
    func(v any) any { return float64(v.(int)) * 1.5 },
    func(v any) any { return fmt.Sprintf("결과: %.1f", v) },
)  // "결과: 63.0"

설치 방법

1. Go 모듈 설치

go get github.com/zkfmapf123/donggo

2. 코드에서 import

import "github.com/zkfmapf123/donggo"