[Go] fogleman의 Go Graphics 라이브러리

Go는 그 목적이 시스템 및 서버 프로그래밍에 있음으로 그리기(Draw) API는 지원하지 않는다. 그러나 Go 언어에는 이러한 부족한 부분을 채워줄 매우 많은 그래픽 라이브러리 존재하는데, 그 중에 하나가 fogleman이 개발한 Go Graphic 라이브러(https://github.com/fogleman/gg)이다.

아래의 코드는 이 라이브러리를 이용해 필자가 작성한 테스트 코드이다. (사실 이글은 Go 마스터하기 라는 책을 다 보고, 다시 한번 더 볼 요량으로 파일을 정리하던 중에 코드를 이 블로그에 저장하기 위한 목적을 갖는다.)

결과는 아래와 같은 out.png 파일을 생성한다는 것이다. 파일로 생성하는 것은 필자의 목적에 맞기 때문인데, 이렇게 생성한 이미지를 네트워크를 타고 클라이언트에 전송되는 것이 목적이다. 또는 캐쉬 되거나…

위의 결과 외에도 이 라이브러리의 개발자가 언급한, 표현 가능한 결과물은 아래와 같으니 참고 바란다.

내용 정리 끝냈으니, 관련 소스 파일은 삭제 .. !

[Go] 슬라이스의 정렬(Slice Sort)

나는 중학교 시절, 마이컴이라는 컴퓨터 잡지에서 동일한 기능을 수행하는 코드를 Basic, Pascal, C, Fortran, Cobol이란 프로그래밍 언어를 통해 비교해서 보여주는 글을 본적이 있다. 수십년전의 기억이지만, 나는 그때 그 짧은 소스코드를 보고 느꼈던 설레임을 아직도 기억한다. (노래 가사가 맞구요;) Go라는 언어가 생생했던 그 설레임을 다시 생동감있게 되살려 준다.

Go에서 대표적인 자료 구조로써 배열과 매우 유사하지만, 그 길이를 동적으로 변경할 수 있다는 이점을 갖는 Slice라는 타입이 있다. 이 슬라이스를 통해 여러개의 데이터를 담아둘 수 있고, 담아둔 데이터들을 목적에 맞게 활용하는데.. 담아둔 여러개의 데이터를 어떤 기준에 맞게 정렬을 해야 할 때가 있다. 이때를 위한 예제 코드를 정리해 본다.

결과는 아래와 같다.

복합 데이터의 묶음 타입인 구조체를 정의하고 구조체를 정의하는 필드값을 기준으로, 여기서는 나이를 의미하는 age를 통해 오름차순으로 정의하기 위해 익명함수를 사용했다. 코드는 짧지만 곰곰히 코드를 되짚어 볼만한 예제이다.