모듈과 패키지

1. 모듈의 변천과정

  • Go 1.11 이전 : 모듈 존재 X
  • Go 1.11 : 모듈이 소개되었지만 미완성
  • Go 1.13 : 모듈 완성
  • Go 1.16 : 모듈이 이제 기본이 되었다.

1) 모듈

모듈은 패키지의 모음

2) 패키지

패키지는 코드를 묶는 단위로 모든 코드는 반드시 패키지로 묶여야 한다.

우리가 흔히 부르는 프로그램은 다양한 관점에서 의미를 해석할수 있을 텐데 실핼파일 관점에서보면 실행시작 지점을 포함한 패키지. 즉, main함수를 포함한 main패키지이다.

그외의 패키지들은 실행시점을 포함하지 않은 패키지로 프로그램의 보조패키지로 동작한다.



2. 패키지 import

//case 1
import "fmt"

//case2
import (
  "fmt"
  "math/rand"
)
fmt.Println(rand.Int())


//case3
import (
  "text/template"
  htemplate "html/template"
)

◾ 사용하지 않는 package

import (
  "fmt"
  "math/rand"
  _ "strings"
)

별칭으로 _를 주면 import하되 사용하지 않아도 import가 가능

패키지 초기화에 따른 부가효과를 위해서 import해야만 하는 경우가 존재한다.


3. 패키지 외부 공개

함수나 구조체, 구조체 필드들은 대문자로 시작해야 외부에서 접근이 가능하다. 소문자로 시작한다면 같은 패키지내부에서만 접근이 가능하다.





Reference

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트

Tags :

Related Posts

KPU S/W 경진대회 본선 후기

KPU S/W 경진대회 본선 후기

본선일정은 2020.10.14 (수)에 13:30 ~ 17:00까지로 예선 후 1주일 뒤에 잡혀있었다. 수요일 본선 당일 12시 반까지 있던 수업을 마치고 기숙사에 들려 노트북을 챙겨 시험장소인 소강당으로 향했다. 도착해서 점심으로 서브웨이와 스프라이트를 받고 자리를 잡자마자 샌드위치를 허겁지겁 먹어치웠다. (아침 점심을 안먹었더니 배가 너무 고팠었다…😂)...

Read More
AA Tree

AA Tree

RB-Tree를 응용한 트리로 RB-Tree의 많은 조건을 일부 제거하여 구현을 더 간단하게 만든 트리로 균형을 맞추기 위해 레벨의 개념을 사용한 트리이다. 부모와 레벨이 같은 자식 노드의 연결을 수평 링크라고 하며, 이 노드를 구분하기 위해 RED라는 개념을 이용한다. 1. 특징 왼쪽 자식은 RED가 될 수 없다. 연속으로 RED가 올 수 없다. (이중 RED 불가 == 이중 수평 링크) 루트에서 null가지 leafnode까지의 경로에는 동일한 수의 블랙 노드가 존재한다. (RB Tree의 규칙) 모든 leaf node의 레벨은 1이다. 모든 왼쪽 자식의 레벨은 부모의 레벨보다 1 낮다. 모든 오른쪽 자식의 레벨은 부모와 같거나 1 낮다. 모든 오른쪽 손자의 레벨은 할아버지 노드보다 낮다. 1보다 큰 레벨의 모든 노드들은 2개의 자식을 갖는다. 왼쪽 트리를 얼핏 보면 RB-Tree같지만 왼쪽 자식은 RED를 갖지 않는 AA-Tree이고, 이를 레벨을 기준으로 보면 오른쪽과 같이 그려 볼 수 있다....

Read More
[SPSP] Dijkstra 알고리즘

[SPSP] Dijkstra 알고리즘

그래프 중에서 최단 경로를 찾는 알고리즘중에 하나로 하나의 정점에서 다른 모든 정점까지의 최단경로를 구하는 알고리즘 (single-source shortest path algorithmm)으로 우선순위 큐의 방법을 이용하는 알고리즘이다. 가장 최적의 vertex를 한개씩 선택하며 최단 경로를 찾는 방법으로 relax의 개념을 이용하며 relax는 현재 계산된 v노드까지의 거리보다 현재 노드 u까지의 경로와 u에서 v의 가중치 ( e(u,v) ) 가 더 작다면 값을 갱신해준다....

Read More