게시글
(19)Golang singleton pattern 과 init 함수2022년 03월 08일 00시 17분
Golang에서 Singleton Pattern을 구현하는 방법을 알아본다. 패키지가 최초 import될 때 딱 한 번 자동 실행되는 init 함수를 활용해 하나의 객체만 생성하고 접근하게 하는 코드를 예제로 살펴본다.
#Golang
GoLang 변수 할당/생성 := and =2022년 03월 02일 19시 43분
Go에서 변수를 생성하고 할당하는 두 가지 방법인 var =와 :=(short assignment statement)의 차이를 알아보고, 이미 선언된 변수에 :=를 쓸 때 나는 재할당 에러와 여러 변수 선언 시의 예외를 살펴본다.
#Golang
Go(Golang) 버전 업데이트/업그레이드 방법 — Homebrew, 특정 버전, 자동 관리2021년 12월 05일 10시 04분
Homebrew로 Go(Golang) 버전을 최신으로 업데이트하는 방법. brew upgrade go부터 특정 버전 설치, Go 1.21+의 툴체인 자동 관리(GOTOOLCHAIN)까지 정리했다.
#Golang
runtime.Goexit vs os.Exit2021년 08월 15일 19시 16분
Golang의 종료 메소드 os.Exit()과 runtime.Goexit()의 차이를 알아본다. os.Exit은 defer 함수를 무시하고 즉시 종료하지만, Goexit은 deferred 함수를 모두 실행한 뒤 고루틴을 종료한다.
#Golang
GoLang 테스트 전체 돌리기2021년 07월 22일 01시 18분
go test 명령어는 현재 디렉토리의 테스트만 실행하고 하위 디렉토리는 확인하지 않는다. go test ./... 명령어로 GoLang 프로젝트 전체 테스트를 한 번에 돌리는 방법을 알아본다.
#Golang
GoLang + Swagger — swaggo로 API 문서 자동 생성하기2021년 03월 15일 00시 31분
Go(Golang) API 프로젝트에 swaggo/swag으로 Swagger 문서를 붙이는 방법. swag CLI 설치부터 어노테이션 작성, swag init, Swagger UI 라우팅까지 단계별로 정리했다.
#Golang
GoLang + Docker 개발환경 만들기 (Hot Reload, Apple Silicon)2021년 03월 14일 15시 11분
Docker로 Go(Golang) 개발환경 구축하기. air를 이용한 Hot Reload 설정, Dockerfile 작성, Apple Silicon(M1) 지원 현황까지 최신 기준으로 정리했다.
#Golang
Golang build & run with Args2021년 02월 13일 14시 42분
Golang에서 프로그램 실행 시 Argument를 받는 방법을 os.Args로 알아본다. go run과 go build 두 가지 실행 방식에서 인자를 넘기는 법과 첫 번째 인자의 차이를 예제로 살펴본다.
#Golang#Translation
Go 코드 컴파일에 대해서 (feat. static linking)2021년 02월 08일 00시 10분
Go 코드를 컴파일하는 방법을 알아본다. go run으로 소스를 실행하고 go build 명령어로 statically linked 실행 파일을 만들며, static linking 덕분에 외부 라이브러리 없이 실행 가능한 이유를 살펴본다.
#Golang
Golang 패키지 배포기2021년 02월 06일 17시 03분
Golang으로 캘린더 관련 함수 패키지 go-times를 직접 만들어 배포해본 경험기. go mod로 모듈을 구성하고 go build와 go install 후 깃허브에 배포해 go get으로 받아 쓰는 과정을 정리했다.
#Golang
Go Channel2021년 01월 31일 01시 50분
Go 동시성의 핵심인 Channel에 대해 알아본다. make로 채널을 선언하고 goroutine과 함께 채널 연산자로 데이터를 주고받는 방법을 간단한 예제 코드로 살펴본다.
#Golang
Go Method & Pointer2021년 01월 31일 01시 48분
Go 구조체에 메소드를 추가하는 방법과 포인터 리시버를 알아본다. 생성자가 없는 Go에서 주소를 직접 리턴해 생성자를 대신하는 패턴과 errors.New로 에러를 미리 정의하는 방식을 예제로 살펴본다.
#Golang
Map & Structure2021년 01월 31일 01시 45분
Class와 Object가 없는 Go에서 key-value 형태의 Map을 선언하는 방법과, 여러 타입의 필드를 가진 Structure(struct)를 정의하고 초기화하는 두 가지 방식을 예제 코드로 알아본다.
#Golang
Array & Slice2021년 01월 31일 01시 41분
Go 언어에서 크기를 지정하는 Array 선언 방법과 크기 제한이 없는 Slice의 차이를 알아보고, append 함수로 슬라이스에 값을 추가하는 방법을 예제 코드로 살펴본다.
#Golang
for, if, switch statement2021년 01월 31일 01시 37분
Go에는 forEach 없이 for문만 존재한다. range를 활용한 반복문 작성법과 if, switch문 안에서만 쓸 수 있는 변수를 선언하는 Go만의 조건문 문법을 예제 코드로 알아본다.
#Golang
Defer2021년 01월 31일 01시 28분
Go의 defer는 해당 라인에서 바로 실행되지 않고 스택에 쌓였다가 함수가 끝날 때 후입선출로 실행된다. defer 시점의 변수 값이 유지되는 이유와 for문 안 defer의 실행 순서를 예제로 알아본다.
#Golang
Functions2021년 01월 31일 01시 24분
Go 함수만의 특징들을 알아본다. 파라미터 타입 생략, 여러 값 반환, 가변 인자 받기, naked return, 함수 종료 후 실행되는 defer까지 Go의 유용한 함수 문법을 예제 코드로 살펴본다.
#Golang
Golang Settings & Vars2021년 01월 30일 13시 52분
Go 개발 환경 세팅 시 알아야 할 GO_PATH 디렉토리와 main 패키지 기본 구조, fmt 라이브러리 사용법을 알아보고, var와 const, short assignment statement로 변수와 상수를 선언하는 방법을 정리했다.
#Golang
Why GOLANG ?2021년 01월 30일 13시 25분
Go 언어를 배우기로 결심한 이유를 정리했다. 컴파일 언어의 빠른 속도, 타입을 강제하는 정적 언어, 동시성 지원, Garbage Collection, static linking 기본 지원 등 Golang의 장점들을 살펴본다.
#Golang