Go 언어로 구현된 유틸리티 패키지입니다. JavaScript 스타일의 함수들을 Go 언어에서 사용할 수 있도록 구현했습니다.
go get github.com/zkfmapf123/donggo
배열에 특정 값이 포함되어 있는지 검사하는 함수입니다.
arr := []int{1, 2, 3, 4, 5}
result := Contains(arr, 3) // true
JavaScript의 Object.keys
와 동일한 기능을 수행합니다. 맵의 모든 키를 배열로 반환합니다.
m := map[string]int{"a": 1, "b": 2}
keys := OKeys(m) // []string{"a", "b"}
JavaScript의 Object.values
와 동일한 기능을 수행합니다. 맵의 모든 값을 배열로 반환합니다.
m := map[string]int{"a": 1, "b": 2}
values := OValues(m) // []int{1, 2}
JavaScript의 Object.entries
와 동일한 기능을 수행합니다. 맵의 키-값 쌍을 2차원 배열로 반환합니다.
m := map[string]int{"a": 1, "b": 2}
entries := OEntries(m) // [][]any{{"a", 1}, {"b", 2}}
JavaScript의 JSON.stringify
와 동일한 기능을 수행합니다. 객체를 JSON 문자열로 변환합니다.
data := map[string]interface{}{"name": "John", "age": 30}
bytes, str, err := JsonStringify(data)
// str: `{"name":"John","age":30}`
JavaScript의 JSON.parse
와 동일한 기능을 수행합니다. JSON 문자열을 객체로 변환합니다.
jsonStr := []byte(`{"name":"John","age":30}`)
var result map[string]interface{}
result = JsonParse[map[string]interface{}](jsonStr)
JavaScript의 Axios와 유사한 HTTP 클라이언트를 제공합니다.
HTTP 요청을 보내고 응답을 받는 함수입니다. 제네릭을 사용하여 요청과 응답 타입을 지정할 수 있습니다.
옵션 설정 함수들:
WithUrl(url string)
: 요청 URL 설정WithMethod(method string)
: HTTP 메소드 설정 (GET, POST, PUT, PATCH)WithContentType(contentType string)
: Content-Type 헤더 설정WithHeaders(headers map[string]string)
: 커스텀 헤더 설정
// GET 요청 예제
response, statusCode, err := Axios[struct{}, PostResponse](
struct{}{},
WithUrl("https://api.example.com/posts/1"),
WithMethod("GET"),
)
// POST 요청 예제
post := Post{Title: "제목", Body: "내용", UserID: 1}
response, statusCode, err := Axios[Post, PostResponse](
post,
WithUrl("https://api.example.com/posts"),
WithMethod("POST"),
WithHeaders(map[string]string{
"Content-Type": "application/json",
}),
)
함수형 프로그래밍을 위한 파이프라인 패턴을 제공합니다.
일반적인 파이프라인 함수입니다. 동일한 타입의 함수들을 연결하여 실행합니다.
result := Pipe(3,
func(v int) int { return v * 2 },
func(v int) int { return v + 1 },
) // 7
에러 처리가 가능한 파이프라인 함수입니다. 각 단계에서 에러가 발생하면 파이프라인이 중단됩니다.
result, err := PipeWithError(3,
func(v int) (int, error) { return v * 2, nil },
func(v int) (int, error) {
if v > 5 {
return v, errors.New("value is over 5")
}
return v + 1, nil
},
)
타입이 다른 함수들을 연결할 수 있는 파이프라인 함수입니다.
result := PipeWiths(3,
func(v any) any { return v.(int) * 10 },
func(v any) any { return strconv.Itoa(v.(int)) },
) // "30"
MIT License