Go 프로그래밍 언어: 기초
분야
프로그래밍/소프트웨어 개발
대상자
Go 언어를 처음 접하는 개발자, 기초 문법을 익히고자 하는 학습자
난이도: 초보자 ~ 중급 수준
핵심 요약
- 정적 타입 언어로 컴파일 타임에 타입 검사를 강제하며, 동시성 지원이 특징
- 변수 선언은 타입 추론 및 명시적 타입 설정 가능, 상수는 컴파일 타임에 고정
- 명시적 타입 변환 필요 (예:
float64(count)
) for
루프는 C 스타일for
,while
대체 기능 제공,switch
는 다중 값 매칭 가능
섹션별 세부 요약
1. 변수 및 상수
- 변수 기본값은
0
,""
,false
,nil
(포인터, 슬라이스, 맵 등) - 타입 추론 (
:=
) 및 명시적 타입 선언 (var
) 모두 가능 - 상수는 컴파일 타임에 고정되며, 숫자, 문자열, 불린만 허용
- 명시적 타입 변환을 통해 오류 방지 (예:
float64(count)
)
2. 제어 구조
for
루프는 단일 줄도{}
로 감싸야 하며, 조건에는()
필요 없음if
조건문은 조건 전에 초기화 코드 포함 가능 (예: 오류 체크)switch
는 다중 값 매칭 가능 (예:case "Saturday", "Sunday"
)switch
는true
로 자동 변환 (표현식 없음)
3. 데이터 구조 (배열, 슬라이스, 맵)
- 배열은 고정 크기, 동일 타입 요소만 허용 (예:
var scores [4]int
) - 슬라이스는 동적 크기, 배열 기반 (예:
primes := []int{2, 3, 5, 7}
) - 맵은 키-값 쌍의 무순집합 (예:
pop := map[string]int{"New York": 8419000}
) - 맵은 참조 타입으로, 변수 변경 시 모든 참조 영향 (예:
delete(scores, "Charlie")
)
4. 함수 및 클로저
- 다중 반환 값 지원 (예:
divide(a, b int) (int, error)
) - 비ariant 함수는
...
로 가변 인수 허용 (예:sum(values ...int) int
) - 클로저는 상위 스코프 변수 참조 가능 (예:
func() int { return x }
) defer
는 함수 종료 시 실행 (예: 리소스 정리)
결론
- 명시적 타입 변환과 제어 구조의 유연성은 Go의 핵심 특징
- 슬라이스는 배열 대신 사용 권장, 맵은 키 존재 여부 검사 필수
- 클로저와
defer
는 복잡한 로직 처리에 유용, 함수는 일급 시민으로 활용 - 실무에서는 타입 안전성과 메모리 관리를 중점으로 코드 작성 권장