
Go 패키지 기초
Go 언어
- 웹 개발
- 클라우드 컴퓨팅 시스템 및 다중 플랫폼 애플리케이션
- 블록체인 코어 및 서비스 개발
- DevOps
- CI/CD
Go mod
- 라이브러리를 패키지로 관리
- 외부 패키지를 설치, 삭제, 관리하기 위한 모듈 관리 유틸리티 제공
- go mod 명령어
- go mod init
- 모듈 초기화 실행
- 기존 go.mod 파일이 존재할 경우 무시하며 강제 실행시 go.mod 파일 삭제 후 실행
- go mod tidy
- 초기화 후 패키지 설정 및 정렬
- 외부 패키지 리스트 go.sum 파일 생성
- go.sum 파일이 있으면 해당 파일 내용의 패키지 다운로드 및 패키지 설정 진행
- go.mod 파일 생성
- 해당 프로젝트에서 사용하고 있는 외부 패키지 내역
- 컴파일
- 실행 및 컴파일
- 주석
- 대소문자별 특성
- 변수 및 함수명의 맨 앞글자가 대문자일 경우 전역으로 사용가능
- 볓수 및 함수명의 맨 앞글자가 소문자일 경우 파일 내에서만 사용가능
- 상수명
패키지 특성
- 패키지(Package)
- 패키지를 통해 코드의 모듈화, 재사용 기능 제공
- 표준 라이브러리 패키지
- 메인 패키지(Main Package)
- “main”이라고 명명된 패키지는 컴파일시 컴파일러가 공유 라이브러리가 아닌 실행프로그램으로 만든다.
- “main” 패키지 안의 main() 함수는 프로그램의 시작점
- 공유 라이브러리 제작 시 main 패키지나 main 함수의 명칭을 사용하면 안된다.
- 패키지 스코프(Package Scope)
- 함수명의 맨 앞글자가 대문자일 경우 public으로 인식
- 함수명의 맨 앞글자가 소문자일 경우 non-public으로 인식
- Package Init, alias
- init()
- 패키지 실행 시 처음으로 호출되는 함수
- 패키지가 로드되면서 실행되는 함수로 별도의 호출 없이 자동으로 호출된다.
- alias
- 패키지의 이름이 동일한 상태에서 서로 다른위치, 다른 버전을 만들어 사용 시 alias를 통해 구분할 수 있다.
- 사용자 정의 Package 생성
- 임의 폴더 하위에 있는 .go파일
- 하나의 서브 폴더 안에 있는 .go 파일들은 동일한 패키지명을 가진다.
- 패키지명은 해당 폴더의 이름과 같게 함으로써 여러 *.go 파일들은 하나의 패키지로 묶이게된다.
CASE - 표기법
- Mixcap 표기법 사용
- TempFunction()
- tempFunction()
- 함수, 변수명 등에 _ 언더바 사용은 하지 않도록 한다.
세미콜론
- 소스 상에서는 사용하지 않지만 컴파일 시 자동으로 구문마다 세미콜론을 넣어준다.
Null 표현식
- 일반적으로 존재하지 않는 값 또는 메모리 주소를 의미한다.
- Zero value
- 초기값을 가지지 않고 변수를 만들었을 때 해당 변수가 가질 값
- nil
- point, interface, slice, channel, func의 zero value를 의미
가변 식별자
- 가변인자
- 함수의 매개변수 개수가 정해져 있지 않고 유동적으로 변하는 형태
- func 함수명(매개변수명 …자료형) 리턴값_자료형{}