Go lang을 처음 사용하시다 보면 package라는게 눈에 많이 띄실겁니다.
그렇다면 Go에서 package가 뭘까요?
1. Package
package란 코드를 묶는 단위중 가장 큰 단위라고 생각하시면 됩니다.
go 언어에서 package는 main package와 그 외 package로 나누어 집니다.
2. main package
프로그램의 시작점을 가르키는 package입니다.
이렇게 package를 main으로 설정하게 되면 go run [main package인 파일이름]
main package가 아닌 파일을 실행시키려고 하면 이렇게
package command-line-arguments is not a main package 라는 오류가 발생합니다.
3. 그 외 package
go 언어는 한 프로그램들 안에서 다양한 package를 가질 수 있습니다.
go 언어 자체의 내부 패키지도 있고 외부에 있는 package를 가져와서 사용할 수도 있습니다. 예를 들면 api를 가져올 수 있죠.
또한 자기자신이 만든 다른 폴더의 코드를 불러 올 수도 있습니다.
TEST
ㄴquery
ㄴfunnel.go
ㄴmain.go
현재 저의 주요 코드의 파일 위치입니다.
저는 main.go에서 funnel.go에 있는 함수를 불러오고 싶은 것이죠
funnel.go는 query라는 패키지안에 들어있습니다.
main.go에서 import 를 통해서 query라는 패키지를 불러왔습니다.
원래는 제가 알기로는 "query"만써도 되는 걸로 알고있었는데 저는 이상하게 "test/query" 라고 해야 잘 수행되더라고요
이렇게 하면 main.go에서
이런 funnel.go안에 함수 즉 query패키지의 함수를 활용할 수 있게 됩니다.
5. 내가 만든 다른 패키지 함수 불러올때 유의할점
저는 이 문제 때문에 꽤나 오래 고민했지만 사실 별 어려운 부분도 아니라 생각하고 여러분은 금방 알게 될거라 생각하지만 작성해보겠습니다.
golang에서는 다른 package에서 접근할 수 있는 함수 즉, public함수는 함수의 앞글자를 대문자로 작성해주어야 하더라고요
저는 소문자로 해놓고 왜 안되지!! 하고있었습니다.
아무튼 별건 아니지만 이런 소소한 부분 유의하시기 바랍니다.