Go 기초 - 패키지, mod, Format, 표기법 등

프동프동·2022년 12월 19일
0

Go

목록 보기
1/2
post-thumbnail

Go 언어

  • 웹 개발
  • 클라우드 컴퓨팅 시스템 및 다중 플랫폼 애플리케이션
  • 블록체인 코어 및 서비스 개발
  • DevOps
  • CI/CD

Go mod

  • 라이브러리를 패키지로 관리
  • 외부 패키지를 설치, 삭제, 관리하기 위한 모듈 관리 유틸리티 제공
  • go mod 명령어
    • go mod init
      • 모듈 초기화 실행
      • 기존 go.mod 파일이 존재할 경우 무시하며 강제 실행시 go.mod 파일 삭제 후 실행
    • go mod tidy
      • 초기화 후 패키지 설정 및 정렬
      • 외부 패키지 리스트 go.sum 파일 생성
      • go.sum 파일이 있으면 해당 파일 내용의 패키지 다운로드 및 패키지 설정 진행
  • go.mod 파일 생성
    • 해당 프로젝트에서 사용하고 있는 외부 패키지 내역
  • 컴파일
    • go build -o main.go
  • 실행 및 컴파일
    • go run main.go

Format

  • 주석
    • 단일 라인 주석
      • //
    • 다중 라인 주석
      • /* */
  • 대소문자별 특성
    • 변수 및 함수명의 맨 앞글자가 대문자일 경우 전역으로 사용가능
      • 타 언어의 public과 같은 의미
    • 볓수 및 함수명의 맨 앞글자가 소문자일 경우 파일 내에서만 사용가능
      • 타 언어의 private과 같은 의미
  • 상수명
    • 카멜케이스(camelCase) 사용

패키지 특성

  • 패키지(Package)
    • 패키지를 통해 코드의 모듈화, 재사용 기능 제공
    • 표준 라이브러리 패키지
      • GOROOT/pkg
  • 메인 패키지(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 함수명(매개변수명 …자료형) 리턴값_자료형{}
profile
좋은 개발자가 되고싶은

0개의 댓글