레슨 8 / 8·15분
Go 레퍼런스
기본 타입과 제로 값
go
// 기본 타입과 제로(zero) 값
// bool -> false
// int, float -> 0
// string -> ""
// pointer -> nil
// slice, map -> nil
// 타입 변환 (명시적 캐스팅 필요)
var i int = 42
var f float64 = float64(i)
var s string = fmt.Sprintf("%d", i)
// strconv 패키지
// strconv.Itoa(42) -> "42"
// strconv.Atoi("42") -> 42, error
// strconv.ParseFloat("3.14", 64) -> 3.14, error슬라이스와 맵 조작
go
// 슬라이스 (Slice)
nums := []int{1, 2, 3}
nums = append(nums, 4, 5) // 추가
sub := nums[1:3] // 슬라이싱 [2, 3]
length := len(nums) // 길이
capacity := cap(nums) // 용량
copied := make([]int, len(nums))
copy(copied, nums) // 복사
// 맵 (Map)
m := map[string]int{
"alice": 90,
"bob": 85,
}
m["charlie"] = 92 // 추가/수정
delete(m, "bob") // 삭제
val, ok := m["alice"] // 존재 여부 확인
if ok {
fmt.Println(val) // 90
}
for key, value := range m { // 순회
fmt.Println(key, value)
}주요 표준 라이브러리
- •
fmt-- 포맷 입출력 (Println, Printf, Sprintf, Scanf) - •
strings-- 문자열 조작 (Contains, Split, Join, Replace) - •
strconv-- 문자열/숫자 변환 (Atoi, Itoa, ParseFloat) - •
os-- 파일, 환경 변수, 프로세스 (ReadFile, WriteFile, Args) - •
io-- 입출력 인터페이스 (Reader, Writer, Copy) - •
encoding/json-- JSON 직렬화 (Marshal, Unmarshal) - •
net/http-- HTTP 서버/클라이언트 (ListenAndServe, Get) - •
time-- 시간, 타이머 (Now, Sleep, Format) - •
sync-- 동기화 (Mutex, WaitGroup, Once) - •
context-- 취소, 타임아웃 (WithCancel, WithTimeout) - •
log-- 로깅 (Println, Fatal, SetFlags) - •
testing-- 테스트, 벤치마크 (T, B, Run)
Go 명령어 모음
go
// 빌드와 실행
// $ go run main.go # 실행
// $ go build -o app . # 빌드
// $ go install # $GOPATH/bin에 설치
// 모듈 관리
// $ go mod init myapp # 모듈 초기화
// $ go mod tidy # 의존성 정리
// $ go get pkg@version # 패키지 추가
// 코드 품질
// $ go fmt ./... # 코드 포맷팅
// $ go vet ./... # 정적 분석
// $ go test ./... # 테스트 실행
// $ go test -cover ./... # 커버리지
// 도구
// $ go doc fmt.Println # 문서 조회
// $ go env # 환경 변수 확인💡
Go 공식 사이트(go.dev)에서 표준 라이브러리 문서와 Go Playground를 활용하세요. go doc 명령으로 터미널에서도 문서를 바로 확인할 수 있습니다.