Go.#3 / 패키지

2019. 12. 15. 00:04Tutorial & Training/Go

728x90

 

 

지난 시간에는 Go언어에 대해 알아보고 컴파일러를 설치해 간단하게 출력을 해보는 시간을 가졌습니다.

오늘 진행할 내용은 Package(패키지)입니다!

 

 

Package란?

간단하게 말하면 코드의 모듈화, 재사용성을 극대화 하기 위해 사용하는 방법입니다.

처음 접하시는 분들을위해 좀더 쉽게 설명하자면, 파일을 폴더에 정리하는겁니다.

비유가 조금 그럴수도 있지만 가장 이해가 빠르게하려면...

 

만약 야동이 있는데, 직박구리 안에 넣으면 대체로 90%의 대한민국 남성이라면

이 안에는 야동이라는 파일들이 있다는 것을 알 수 있습니다.

검열삭제 각..

 

그안에 JAV 이러면 당연히 일본 야동으로 분류된 JAV 라는 패키지가 되는것이지요.

EN이면 미국.. KOR면 한국...

 

ㅗㅜㅑ...

우리는 이렇게 한국 미국 일본이라는 큰 분류로 패키지화 할 수 있습니다.

미국 패키지에는 미국에 관련된 파일(컴포넌트)를 작성하는 것이죠!

한국 패키지에는 한국에 관련된 파일(컴포넌트)를 작성하는 것이죠!

일본 패키지에는 ... 킹시국에?

 

 

Python에서는 폴더를 생성후 하위 파일들을 작성하고

__init__.py 파일을 통해 패키지를 명시합니다.

 

Java에서도 Package의 개념이 같습니다! 하지만 자바는 반드시 클래스를 사용해야하기 때문에

클래스를 기준으로 작성하는 것이고,

파이썬은 모든개체가 오브젝트(객체)이지만, 클래스는 선택사항 입니다.

 

Nodejs를 사용해보셨다면 Nodejs를 사용하여 Javascript의 패키지를 관리할 때는

Package.json과 Package-lock.json 이라는 파일을 보셨을텐데

해당 패키지의 경로로 가보면 역시나 분류가 잘 되어 있습니다.

 

 

 

패키지 매니저

요즘 언어들을 보면 다들 특출나게 패키지관리자 라는 친구가 존재합니다.

Python을 사용해보셨다면, PIP(Python Package Installer)를 접해본적 있을겁니다.

바로 다음처럼요!

pip3 install requests  # requests 라이브러리를 설치하는 방법

 

NodeJS에서도 NPM(Node Package Manager) 이라는 패키지 관리자가 존재합니다.

Nodejs를 사용해보셨다면 마찬가지로 다음과 같은 명령어를 입력해본적이 있을겁니다.

바로 다음 처럼요!

npm i --save lodash  # loadsh 라이브러리를 설치하는 방법

 

이러하듯 Go에서도 패키지 매니저가 존재합니다!

제가 처음 접했을 당시만해도 환경변수의 ㄱㅎ(극혐)의 정점을 찍던 Go언어 였는데...

Go 개노답시절 영정...

이랬던 Golang이 지금은 Go Modules로 통합되어 

mod 라는 것을 사용합니다. 

 

 

 

 

 

 

 

 

패키지 초기화

꼭 Vscode의 터미널이 아니어도 됩니다!

저는 바탕화면에 learn이라는 폴더를 만들고

learn 이라는 폴더안에서 hello 패키지를 초기화 했습니다!

 

example.com은 왜 작성하나요?

초기화 모듈 명시 없이할 때 오류

외부에서 모듈 경로를 지정해야 한다고 언급하며, 예시로 example.com으로 알려주고 있는데

왜 이렇게 하는지에 대해서는 추후에 내용을 다뤄보겠습니다.

잠깐 언급하자면, git repository(저장소)를 import에 명시할 경우 해당 패키지를 사용 가능합니다!

pip에서는 별 이상한짓거릴 해야하는데 정말 좋은기능...

 

 

초기화 명령은 위 이미지 처럼

// go mod init <모듈 명>
go mod init example.com/hello

위 명령어를 입력하여 초기화 할 경우

go.mod 라는 파일을 생성합니다.

 

해당 파일을 열어보면

go.mod

example.com/hello 라는 모듈이며 해당 패키지의 dependency(의존성)이 명시되어 있습니다.

 

이처럼 생성된 모듈을 나중에는 git을 이용하여 저장소에 commit, push하여 공개하고,

그렇게 git을 통해서 패키지를 공유하고 재사용하고 할 수도 있지만 지금은 다루지 않겠습니다!

 

 

기본 패키지

Go에는 여 타 언어들처럼 내장함수 내장모듈 이라는 개념이 존재하는데

이러한 기본 패키지들은 https://golang.org/pkg/ 에서 확인할 수 있습니다.

 

Packages - The Go Programming Language

Packages

 

대표적으로 이전에는 항상 기본으로 제공되는 fmt 등이 있습니다.

Go언어의 입출력 포맷 관련된 패키지인데,

 

간단하게 사용해보고 오늘은 여기서 마무리해보겠습니다.

 

learn 패키지에 main.go 파일

저는 바탕화면에 아까 만들어논 learn 폴더(패키지)에

대충 main.go를 생성하고 테스트를 해보겠습니다.

 

package main

import "fmt"

func main() {
	year := 2019
	master := "yankee"
	fmt.Println("This Year: ", year)
	fmt.Printf("we are Grand Master is: %s", master)
}

Go언어의 내장 fmt 패키지 모듈을 사용한 출력방법 입니다.

지금은 굳이 fmt를 안써도 잘만 되는데 왜써야하는거지?!

%s, %d와 같은 포맷스트링을 사용하려면 fmt가 필요로 합니다!

 

%s는 말그대로 String 즉 문자열이고

%d는 말그대로 Digit 즉 숫자입니다

 

 

728x90

'Tutorial & Training > Go' 카테고리의 다른 글

#01.Go - GraphQL 알아보기  (0) 2020.05.31
Go언어 ORM GORM의 크나큰 문제점  (0) 2020.05.15
Go Gorm Preload without order by  (0) 2020.05.13
Go.#2 / Go언어 컴파일러 설치하기  (0) 2019.12.06
Go.#1 / Go언어 시작하기  (0) 2019.12.05