Go 언어는 매력적이다익명 필드를 사용한 상속의 문제점해결 방법리시버를 사용할 때 주의할 점배열 길이 생략 표현해결 방법슬라이스에러 핸들링번외: Go 언어에서 try...catch에 가까운 구현for range세미콜론 자동 삽입에 의한 문법 제약이름 공간과 패키지 이름interface{}가 nil이 되지 않는 문제교훈프리미티브 타입(chan)에서 변수 자동 초기화를 기대할 수 없음해결 방법Go Modules 사용 시 고유 URL 필요Go의 툴체인에 --verbose에 해당하는 기능이 없음GoTo가 사용 가능결론익명 필드를 사용한 상속의 문제점Go 언어는 객체 지향 언어는 아니지만, 구조체와 리시버를 사용하여 객체의 멤버를 "호출"할 수 있습니다. 먼저, Animal "클래스"를 만들어보고, 자기소개를 위..
Go의 문자열 결합 성능 비교테스트 케이스구현+= 연산자 루프strings.Join 함수한 번의 대입문으로 + 연산자로 모든 요소를 결합[]byte 사용용량을 지정한 []bytebytes.Buffer 사용용량을 지정한 bytes.Buffer용량을 지정한 bytes.Buffer + WriteString결과 정리결론안녕하세요! 이번 글에서는 Go 언어에서 문자열을 결합하는 여러 가지 방법을 비교해보려고 합니다. 다양한 방법을 벤치마크 테스트를 통해 성능을 비교하고, 가장 효율적인 방법을 찾아봅시다.테스트 케이스아래와 같은 9글자 * 10개의 요소로 이루어진 문자열 배열을 ","로 결합하고, 마지막에 ","를 추가하는 코드를 구현했습니다. 원하는 출력은 string이기 때문에, []byte나 bytes.Buf..
Go 언어 슬라이스 완벽 이해 - 구현과 활용슬라이스의 실체요소에 접근하기요소 추가하기용량이 충분한 경우용량이 부족한 경우마무리마무리슬라이스의 실체Go의 런타임 코드를 보면, Go의 슬라이스는 다음과 같이 정의되어 있습니다.type slice struct { array unsafe.Pointer len int cap int} reflect 패키지의 SliceHeader를 봐도 다음과 같이 정의되어 있습니다.type SliceHeader struct { Data uintptr Len int Cap int} 즉, Go의 슬라이스는 다음 그림처럼 배열에 대한 포인터와 길이, 그리고 용량을 가진 값으로 표현됩니다.런타임과 reflect 패키지에서 포인터를 unsafe...
동적인 요소를 가진 JSON을 깔끔하게 Unmarshal하기시작하며요점Unmarshal할 때 에일리어스를 정의하고 동적인 요소를 json.RawMessage로 상속정리시작하며JSON API 클라이언트를 만들 때, 특정 요소가 동적인 값을 가지는 JSON을 Unmarshal해야 할 때가 있습니다. 예를 들어, 아래와 같은 JSON입니다. 여기서 shape 요소의 값이 동적으로 변하는 상황을 가정합니다.{ "id": "001", "type": "circle", "shape": { "radius": 5 }}{ "id": "002", "type": "rectangle", "shape": { "height": 5, "width": 2 ..