
분명 부트캠프는 끝이 났건만, 자꾸 뭐를 챙겨주신다. 이것이 부모님의 마음인가?
사실 go 언어를 배울 시간이 있지는 않다. 취업까지 배워봤자 찍먹일테고, 기존에 배웠던 언어를 고도화하고 복습하는게 더 나을 것 같기도 했다.
그러나 강사님이 너무 베테랑 전문가시고, 분명 16시간 강의를 통해 얻어가는게 있다고 생각해 이런 강의를 준비하셨을테니까, 또한 go를 처음 배우는 것도 아니고, 이것도 복습 겸 학습이지 않으리오?
장점
웹 서버 + 데모 서버 둘 다 만들 수 있음 (원래는 따로 따로 )
생산성 좋다, 빠르고 안정적
강력하고 미래 지향적인 언어
단점
우리나라에서 취급을 별로 안함, 진입단계
또한
최근 블록체인 코어 및 서비스 개발에 활발히 사용되고 있음, 간결하고 간단한 구문덕에 devops에서 도움이 되고 ci/cd 프로세스를 개선하고 가속화하기 위한 솔루션으로 자주 사용됨
라고 한다.
이 특강은 실습과 이해가 더 주요하기에 블로깅은 초간단하게, 복습하는 느낌으로 적겠다.
go env를 실행해
GOPATH
를 알아보고 해당 디렉토리에서
bin
pkg
src
폴더를 생성해야 한다.
go에서는 라이브러리를 패키지로 관리하고, 외부 패키지 관리를 위한 모듈 관리 유틸리티를 제공하는 go mod를 사용
go mod init : 모듈 초기화 진행
go mod tidy : 초기화 후 패키지 설정 및 정렬, 외부 패키지 리스트 go.sum 생성
go run : 실행
go build -o ready <파일명> : 컴파일
저장하면 자동으로 들여쓰기 가능, 세미 콜론 거의 안 쓰는 추세
대문자 : 전역 사용 가능 (public)
소문자 : 해당 파일 내에서만 사용 가능 (private)
go package : go는 개발에 필요한 패키지를 표준 라이브러리로 제공, 이들은 GOROOT/pkg 안에 존재
MixCap 표기법을 사용 (internalFunction, helloWorld 이런 식, 언더바 지양)
세미콜론 for loop 에서만 구분할 때 사용, 아니면 쓰지마
함수 매개변수 개수가 정해져 있지 않으면 ...로 표현한다.
func sum(n ...int) int {
total := 0
for _, value = range n { // range로 가변인자의 모든 값 꺼냄
total += value
}
return total
}
func main() {
r := sum(1,2,3,4,5)
fmt.println(r) // 15
}
사용하지 않는 변수를 처리할 때 사용
모든 프로젝트의 시작 함수
기본 입출력 패키지
print : 값을 그대로 문자열로 만들시 사용, 붙여서 출력
println : 인자 간 사이 공백, 개행 문자(줄바꿈) 추가 출력
printf: 형식을 지정하여 출력, 문자열과 변수를 함께 출력시 사용
s := "name"
fmt.Printf("Hello %s", s).
//"Hello name"
변수를 핸드링한 이후에 메모리에 저장, 변수를 문자열로 만들거나 문자열에서 변수로 값을 가져올 때 사용
네이밍 시 숫자 시작 지양
변수 네이밍시 공백 불가
대/소문자 구분
var i int
var j int = 10
var k = 10
l := 10
func divide(a,b int) (n int, err error) {
if b === 0 {
return 0, errors.New("분모는 0이면 안됩니다")
}
return a / b , nil
}
func main() {
res, err := divide(4,2)
if err != nil {
fmt.println("ERROR: ", err.Error())
} else {
fmt.Println(res)
}
}