Go 언어 라이브러리 만들기

Go 언어 들이대기

이제 Go 프로그램을 만들 준비가 됬고 hello 프로그램도 만들었습니다.

이번에는 hello에서 사용할 라이브러리를 만들어서 사용해보도록 하겠습니다.

기본 라이브러리들도 많지만 직접 만든 라이브러리를 사용하는것도 즐겁고 재미있는 일입니다.

준비

라이브러리를 작성할 디렉토리를 만듭니다.

$ mkdir $GOPATH/src/github.com/dimplejuno/example/stringutil

위에있는것 처럼, 워크스페이스의 src 디렉토리 밑에 hello 를 작성하면서 만들었던 디렉토리 구조와 같은 디렉토리에 stringutil 이라는 폴더를 생성하고 라이브러리를 작성합니다.

위의 구조는 저의 경우이고 여러분은 자유롭게 디렉토리를 구성해도 됩니다.

github.com/dimplejuno  와 같이 github에 리포지토리가 있는 경우에는 위와 같이 만들기를 구글이 권장합니다.

소스 만들기 

reverse.go 라는 파일을 만들고 아래의 내용을 입력합니다.

// Package stringutil contains utility functions for working with strings.
package stringutil

// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
	r := []rune(s)
	for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
		r[i], r[j] = r[j], r[i]
	}
	return string(r)
}

위의 소스는 https://golang.org/doc/code.html 에 있습니다. 참조하시면 됩니다.

입력된 문자열을 꺼꾸로 출력하는 함수를 정의했습니다.

이제 소스 디렉토리로 이동하여

$ go build

를 입력하여 빌드합니다.

빌드하는것으로 출력파일은 생성되지 않습니다. go install 하시면  GOPATH 밑에 pkg  폴더가 생성되고 거기에 만들어 집니다.

이제 전에 작성했던 hello 소스를 작성한 라이브러를 사용하도록 수정합니다.

package main

import (
 "fmt"

 "github.com/dimplejuno/example/stringutil"
)

func main() {

 fmt.Printf(stringutil.Reverse("\n!oG ,olleH"))
}

위에 import 에 작성한것 처럼 라이브러리를 참조하도록 수정합니다.

그리고 꺼꾸로입력한 문자열을 파라미터로 주고 출력해 봅니다.

$ hello

Hello, Go!

잘 됩니다.

모든것이 잘 진행되면 궁극적으로

bin/
    hello                 # command executable
pkg/
    darwin_amd64/          # this will reflect your OS and architecture
        github.com/dimplejuno/example/
            stringutil.a  # package object
src/
    github.com/dimplejuno/example/
        hello/
            hello.go      # command source
        stringutil/
            reverse.go    # package source

의 디렉토리 구조가 만들어 집니다.

pkg에서 사용하는  운영체제에 따라서 리눅스와 윈도우즈는 이름이 다르겠습니다.

go install 명령은 stringutil.a  파일을 pkg 디렉토리에 만듭니다. 따라서 다음번에 중복적으로 컴파일 되지 않고 스태틱하게 포함되어 패키지를 사용한 파일이 실행할때 필요하지도 않습니다.

리모트 패키지 사용하기

github에 있는 패키지를 가져와서 사용할 수 있도록 go tool은 편리한 기능을 제공합니다.

$ go get github.com/golang/example/hello
$ $GOPATH/bin/hello
Hello, Go examples!

위와 같이 go get 명령으로 원격있는 github 소스를 읽어들일 수 있습니다.

소스들을 묶어서 github에 올려놓았습니다.

참고 : https://github.com/dimplejuno/GoExample

못먹어도 고고고!!!

2 comments

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중