본문으로 바로가기
제품데스크톱 도구TASTECAD도면 확인TASTEFILES파일 관리TASTEFTP파일 전송TASTESSH원격 작업공간TASTEZIP압축과 해제개발 도구TASTECODERust 통합 개발 환경TASTESTUDIO통합 개발·테스트 환경TASTEETL데이터 통합(ETL)서버TASTEREMOTE원격 데스크톱 서버TASTEGEO공간정보 서버TASTEMAIL메일 작업공간시작하기다운로드문서구매모든 제품
마켓플레이스
소식
개발소식오늘의 개발 소식개발 문서프로그래밍 언어RustTypeScriptJavaScriptPythonGoC#JavaCC++KotlinDart프런트엔드 프레임워크Next.jsReactVue.js · NuxtSvelteKitAngular서버 프레임워크Spring BootDjangoFastAPIASP.NET CoreNestJS · Express앱 · 데스크톱 프레임워크TauriFlutterReact NativeElectron알고리즘알고리즘 기초알고리즘 핵심알고리즘 심화실무 알고리즘
커뮤니티프로젝트개발 로그프롬프트AI 도구 이슈쇼케이스커뮤니티 안내
협업기술 전수홈페이지 구축데스크톱 앱 구축릴리스·결제 파이프라인판매 파트너문의
서비스원격 데스크톱설치 패키지 커스텀
TASTEDEV
제품

데스크톱 도구

TASTECAD복잡한 도면을 가볍게 열다TASTEFILES필요한 파일만, 가장 빠르게TASTEFTP파일이 오가는 가장 단정한 길TASTESSH서버와 나 사이, 더 단단한 연결TASTEZIP더 빠르게 묶고, 더 안전하게 풀다

개발 도구

TASTECODERust 앱을 편집 · 빌드 · 디버깅 · 테스트까지 한 창에서TASTESTUDIO편집부터 원격 테스트와 승인 기반 AI 수정까지TASTEETL값을 보며 데이터를 옮깁니다

서버

TASTEREMOTE우리 회사 서버로 운영하는 원격 데스크톱TASTEGEOGeoServer 호환 공간정보 서버를 Rust로 다시 세웁니다TASTEMAIL메일의 주도권을 다시 내 손에

시작하기

다운로드모든 제품 최신 판문서제품 사용법구매구독 · 영구 라이선스모든 제품모든 제품 한눈에
모든 제품
마켓플레이스소식
개발

소식

오늘의 개발 소식언어 · 프레임워크 · GitHub · AI 공식 발표개발 문서언어 · 프레임워크 · 알고리즘 안내서

프로그래밍 언어

RustTypeScriptJavaScriptPythonGoC#JavaCC++KotlinDart

프레임워크

프런트엔드 프레임워크Next.jsReactVue.js · NuxtSvelteKitAngular
서버 프레임워크Spring BootDjangoFastAPIASP.NET CoreNestJS · Express
앱 · 데스크톱 프레임워크TauriFlutterReact NativeElectron

알고리즘

알고리즘 기초복잡도 분석 · 정렬 · 탐색 · 기본 자료구조 · 트리와 힙알고리즘 핵심그래프 탐색 · 최단 경로와 최소 신장 트리 · 동적 계획법 · 탐욕 알고리즘 · 분할 정복 · 백트래킹알고리즘 심화문자열 알고리즘 · 수학과 정수론 · 비트 연산 · 구간 트리 · 유니온 파인드실무 알고리즘코딩 면접 풀이 전략 · LRU 캐시 · 레이트 리미터 · 일관된 해시
개발 문서 전체 보기
커뮤니티
프로젝트빌더와 작업 발견개발 로그결정과 시행착오프롬프트재사용 가능한 지시AI 도구 이슈Claude · Codex · Gemini 문제와 우회법쇼케이스완성된 결과커뮤니티 안내공개하고 함께 만드는 방식
협업
기술 전수Rust·egui 네이티브 앱 만들기홈페이지 구축10개 언어, 계정, 문서·다운로드데스크톱 앱 구축Rust·egui, WebView 없이릴리스·결제 파이프라인서명 · MSI·deb·rpm·AppImage · 해시판매 파트너소개하고 결제액의 30% 받기문의구축 · 제휴 · 투자 문의
서비스
원격 데스크톱브라우저로 내 컴퓨터에 접속설치 패키지 커스텀필요한 기능만, 설정은 미리
구매
KO
한국어EnglishDeutschEspañolFrançaisItalianoPortuguês (Brasil)日本語简体中文繁體中文
로그인
로그인
TASTEDEV

작은 도구부터, 더 좋은 개발까지.

support@tastedev.netTASTEDEV 후원하기
제품제품군구매문서다운로드마켓플레이스고객 지원
커뮤니티프로젝트개발 로그프롬프트AI 도구 이슈쇼케이스
정책개인정보처리방침이용약관구독 약관환불 정책커뮤니티 운영 정책
계정로그인가입하기
방문자
오늘
012345678901234567890123456789012345678901234567890123456789
어제
012345678901234567890123456789012345678901234567890123456789
누적 조회
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
상호
지엑스소프트
대표자
최영구
사업자등록번호
853-44-00368
주소
인천광역시 미추홀구 경인로 351 9층 V24
전화
+82-10-4404-1523
이메일
whitecalvin@tastedev.net
개인정보 보호책임자
최영구

© 2026 TASTEDEV제품 정보는 현재 검증된 개발 소스를 기준으로 합니다.출시·고도화 중

Go 문서
Go
Go 시작하기기본 문법타입과 데이터모듈과 패키지오류 처리와 테스트핵심 개념: 동시성
토론

Go 안내서 · 1/6

Go 시작하기

Go는 단순한 문법, 빠른 컴파일, 기본으로 들어 있는 동시성 기능을 갖춘 언어입니다. 이 장에서는 Go를 설치하고, 첫 모듈을 만들고, 프로그램을 실행하고 빌드하는 과정까지 차례로 살펴봅니다. 편집기에서 자동 완성과 오류 표시를 받는 방법도 함께 정리합니다.

Go 설치하기

공식 내려받기 쪽 go.dev/dl에서 운영체제에 맞는 설치 파일을 받습니다. Windows와 macOS는 설치 프로그램을 실행하면 되고, Linux는 압축 파일을 /usr/local에 풀고 PATH에 /usr/local/go/bin을 더합니다. 패키지 관리자(Homebrew, winget, 배포판 저장소)로 설치해도 됩니다. 다만 배포판 저장소의 Go는 오래된 경우가 있으니 버전을 꼭 확인합니다.

# Linux 예: 받은 압축 파일을 풀고 PATH 에 더하기
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go*.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

# 설치 확인
go version
go env GOPATH GOROOT

go version이 버전을 출력하면 설치가 끝난 것입니다. go env는 Go 도구가 쓰는 환경 값을 보여 줍니다. GOROOT는 Go 자체가 설치된 곳이고, GOPATH는 내려받은 모듈 캐시와 go install로 설치한 실행 파일(GOPATH/bin)이 놓이는 곳입니다. GOPATH/bin도 PATH에 넣어 두면 편리합니다.

첫 모듈 만들기

Go 코드는 모듈 단위로 관리합니다. 모듈은 go.mod 파일이 있는 디렉터리와 그 아래 패키지들의 묶음입니다. 새 프로젝트를 시작할 때는 빈 디렉터리에서 go mod init으로 모듈 경로를 정합니다. 모듈 경로는 보통 코드가 올라갈 저장소 주소를 씁니다.

mkdir hello && cd hello
go mod init example.com/hello

이제 main.go를 만듭니다. 실행 파일이 되는 프로그램은 반드시 package main이어야 하고, main 함수에서 시작합니다.

package main

import "fmt"

func main() {
	fmt.Println("안녕하세요, Go!")
}

실행과 빌드

go run은 컴파일과 실행을 한 번에 합니다. 결과 실행 파일은 임시 디렉터리에 만들어졌다가 사라지므로 개발 중 빠르게 확인할 때 씁니다. go build는 현재 디렉터리에 실행 파일을 남깁니다.

go run .            # 현재 패키지를 컴파일하고 실행
go build            # 실행 파일 hello(Windows 는 hello.exe) 생성
go build -o bin/app # 출력 경로 지정
./hello

# 다른 운영체제용으로 교차 컴파일
GOOS=linux GOARCH=arm64 go build -o hello-linux-arm64

Go 실행 파일은 기본적으로 필요한 것을 모두 담은 하나의 파일이라 배포가 간단합니다. GOOS와 GOARCH 환경 변수만 바꾸면 별도 도구 없이 다른 플랫폼용 파일을 만들 수 있습니다.

자주 쓰는 go 명령

명령하는 일
go run .컴파일 후 바로 실행
go build실행 파일 또는 패키지 빌드
go test ./...모든 패키지의 테스트 실행
go fmt ./...표준 형식으로 코드 정리
go vet ./...흔한 실수를 찾는 정적 검사
go mod tidy의존성 목록을 코드에 맞게 정리
go doc fmt.Println문서 보기

./...은 현재 디렉터리와 그 아래 모든 패키지를 뜻합니다. go fmt가 만든 형식이 Go 커뮤니티의 표준이므로 들여쓰기나 괄호 위치를 두고 고민할 필요가 없습니다. Go 코드는 들여쓰기에 탭을 씁니다.

프로젝트 구조

작은 프로그램은 go.mod와 main.go만으로 충분합니다. 규모가 커지면 다음과 같은 구조가 흔히 쓰입니다. 공식으로 강제되는 구조는 아니지만 internal 디렉터리는 도구가 특별히 다룹니다.

hello/
  go.mod            # 모듈 경로와 의존성
  go.sum            # 의존성 체크섬
  main.go           # package main
  cmd/
    server/main.go  # 실행 파일이 여럿이면 cmd 아래에 둔다
  internal/
    store/store.go  # 이 모듈 안에서만 가져다 쓸 수 있는 패키지
  greet/
    greet.go        # 다른 모듈도 쓸 수 있는 패키지

한 디렉터리는 하나의 패키지입니다. 디렉터리 안의 .go 파일은 모두 같은 package 이름을 써야 합니다. internal 아래 패키지는 그 부모 디렉터리 트리 안에서만 가져올 수 있어서, 외부에 공개하고 싶지 않은 코드를 두기에 좋습니다.

편집기 설정(gopls)

gopls는 Go 팀이 만드는 공식 언어 서버입니다. 자동 완성, 정의로 이동, 이름 바꾸기, 오류 표시, 가져오기 정리를 제공합니다. VS Code에서는 Go 확장을 설치하면 필요한 도구를 설치하라는 안내가 나오고, GoLand는 자체 분석기를 내장하고 있습니다. Neovim, Emacs 같은 편집기도 LSP 설정으로 gopls를 쓸 수 있습니다.

go install golang.org/x/tools/gopls@latest
gopls version

저장할 때 gofmt(또는 goimports)가 자동으로 실행되도록 설정해 두면 형식과 import 목록을 신경 쓰지 않아도 됩니다. Go는 쓰지 않는 import나 쓰지 않는 지역 변수를 컴파일 오류로 처리하므로, 가져오기를 자동으로 정리해 주는 설정이 특히 쓸모 있습니다.

정리

  • go.dev/dl에서 설치하고 go version으로 확인합니다.
  • 프로젝트는 go mod init <모듈 경로>로 시작하며, 실행 파일은 package main의 main 함수에서 시작합니다.
  • go run은 빠른 실행, go build는 실행 파일 생성, GOOS/GOARCH로 교차 컴파일합니다.
  • 한 디렉터리는 한 패키지이고, internal은 모듈 안에서만 쓰는 코드를 둡니다.
  • 편집기에는 gopls를 연결하고 저장할 때 형식 정리가 되도록 설정합니다.
이 장에 대해 질문이 있나요?
다음 장기본 문법

댓글 0개

인기 댓글순최신순

로그인 · 로그인하면 댓글을 남길 수 있습니다.