"Go 문서"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 9개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
{{작성중}}
[[분류: Go]]
[[분류: Go]]
;Documentation
;Documentation
75번째 줄: 74번째 줄:
Go 애플리케이션의 프로파일에 따른 최적화(PGO)에 대한 메인 문서 페이지입니다.
Go 애플리케이션의 프로파일에 따른 최적화(PGO)에 대한 메인 문서 페이지입니다.


==참조==
==레퍼런스==
;[[Go 기여 가이드]]
;[[Go 패키지 문서|패키지 문서]]
Go 표준 라이브러리에 대한 문서.
 
;[[Go 명령어 문서|명령어 문서]]
Go 도구에 대한 문서.
 
;[[Go 언어 사양|언어 사양]]
공식 Go 언어 사양.
 
;[[Go 모듈 레퍼런스]]
Go의 의존성 관리 시스템에 대한 자세한 참조 매뉴얼.
 
;[[go.mod 파일 레퍼런스]]
go.mod 파일에 포함된 지시어에 대한 레퍼런스.
 
;[[Go 메모리 모델]]
하나의 고루틴에서 변수에 대한 읽기가 다른 고루틴에서 생성된 값을 관측할 수 있는 조건을 명시한 문서.
 
;[[Go 기여 가이드|기여 가이드]]
Go에 기여하는 방법에 대한 가이드.
 
;[[GO 릴리스 이력|릴리스 이력]]
Go 릴리스 간의 변경사항 요약.


==데이터베이스 접근==
==데이터베이스 접근==
;[[Go 튜토리얼: 관계형 데이터베이스 접근하기|튜토리얼: 관계형 데이터베이스 접근하기]]
Go와 표준 라이브러리의 <code>database/sql</code> 패키지를 사용하여 관계형 데이터베이스에 접근하는 기본 사항을 소개합니다.
;[[Go 관계형 데이터베이스 접근|관계형 데이터베이스 접근]]
Go의 데이터 접근 기능에 대한 개요입니다.
;[[Go 데이터베이스 핸들 열기|데이터베이스 핸들 열기]]
Go 데이터베이스 핸들을 사용하여 데이터베이스 작업을 실행할 수 있습니다. 데이터베이스 연결 속성으로 핸들을 열면 핸들이 연결 풀을 관리하여 대신 연결을 처리합니다.
;[[Go 데이터베이스 - 데이터를 반환하지 않는 SQL 문 실행하기|데이터를 반환하지 않는 SQL 문 실행하기]]
SQL <code>INSERT</code>, <code>UPDATE</code>, <code>DELETE</code>와 같이 데이터베이스를 변경할 수 있는 SQL 작업을 위해 <code>Exec</code> 메소드를 사용합니다.
;[[Go 데이터베이스 - 데이터 쿼리하기|데이터 쿼리하기]]
쿼리에서 데이터를 반환하는 <code>SELECT</code> 문을 위해 <code>Query</code> 또는 <code>QueryRow</code> 메소드를 사용합니다.
;[[Go 데이터베이스 - 프리페어드 문 사용하기|프리페어드 문 사용하기]]
반복 사용을 위해 준비된 문을 정의하면, 데이터베이스 작업을 수행할 때마다 문을 다시 생성하는 오버헤드를 피할 수 있어 코드 실행이 조금 더 빨라질 수 있습니다.
;[[Go 데이터베이스 - 트랜잭션 실행하기|트랜잭션 실행하기]]
<code>sql.Tx</code>는 <code>Commit</code>과 <code>Rollback</code>을 포함한 트랜잭션 관련 메소드뿐만 아니라 일반적인 데이터베이스 작업을 수행하는 데 사용하는 메소드를 내보냅니다.
;[[Go 진행 중인 데이터베이스 작업 취소하기|진행 중인 데이터베이스 작업 취소하기]]
[[context.Context]]를 사용하여 더 이상 필요하지 않은 작업의 함수 호출과 서비스를 조기에 중지하고 오류를 반환할 수 있습니다.
;[[Go 데이터베이스 - 연결 관리하기|연결 관리하기]]
일부 고급 프로그램에서는 연결 풀 매개변수를 조정하거나 연결을 명시적으로 작업해야 할 필요가 있을 수 있습니다.
;[[Go 데이터베이스 - SQL 인젝션 위험 방지하기|SQL 인젝션 위험 방지하기]]
SQL 매개변수 값을 sql 패키지 함수 인수로 제공하여 SQL 인젝션 위험을 피할 수 있습니다.
==모듈 개발==
==모듈 개발==
;[[Go 모듈 개발 및 배포|모듈 개발 및 배포]]
관련 패키지를 모듈로 수집하여 다른 개발자가 사용할 수 있도록 배포할 수 있습니다. 이 주제는 모듈 개발 및 배포 개요를 제공합니다.
;[[Go 모듈 릴리스 및 버전 관리 워크플로우|Go 모듈 릴리스 및 버전 관리 워크플로우]]
다른 개발자가 사용할 모듈을 개발할 때, 모듈을 사용하는 개발자들에게 신뢰할 수 있고 일관된 경험을 제공하기 위해 따를 수 있는 워크플로우가 있습니다. 이 주제는 그 워크플로우의 고급 단계를 설명합니다.
;[[Go 모듈 소스 관리|Go 모듈 소스 관리]]
다른 사람들이 사용할 수 있도록 모듈을 개발할 때, 저장소 규칙을 따르면 모듈을 다른 개발자가 더 쉽게 사용할 수 있습니다. 이 주제에서는 이러한 저장소 규칙에 대해 설명합니다.
;[[Go 모듈 조직화]]
일반적인 Go 프로젝트에서 파일과 디렉토리를 구성하는 올바른 방법은 무엇일까요? 이 주제에서는 모듈의 종류에 따라 흔히 사용되는 레이아웃을 설명합니다.
[[Go 모듈 - 메이저 버전 업데이트 개발|Go 모듈 - 메이저 버전 업데이트 개발]]
주요 버전 업데이트는 모듈 사용자에게 매우 혼란을 줄 수 있습니다. 이는 중단 변경을 포함하고 새로운 모듈을 나타내기 때문입니다. 이 주제에서는 이에 대해 자세히 설명합니다.
;[[Go 모듈 배포|Go 모듈 배포]]
다른 개발자가 모듈을 사용할 수 있도록 하려면, 모듈을 배포하여 Go 도구에서 볼 수 있도록 해야 합니다. 모듈을 배포한 후, 개발자가 <code>[[go get]]</code>과 같은 명령어를 실행하여 모듈의 패키지를 가져올 수 있게 됩니다.
;[[Go 모듈 버전 번호|모듈 버전 번호]]
모듈 개발자는 모듈의 버전 번호 각 부분을 사용하여 버전의 안정성과 이전 버전과의 호환성을 신호합니다. 각 새로운 릴리스마다 모듈의 릴리스 버전 번호는 이전 릴리스 이후 모듈의 변경사항의 성격을 반영합니다.
==토크==
==토크==
;[[Go 비디오 투어]]
Go 언어의 빠르고, 재미있고, 생산적인 세 가지 요소: 인터페이스, 리플렉션, 동시성. 이를 시연하기 위해 간단한 웹 크롤러를 만들어 보입니다.
;[[Go - 우아하게 성장하는 코드|우아하게 성장하는 코드]]
Go의 주요 설계 목표 중 하나는 코드의 적응성입니다. 즉, 단순한 디자인을 쉽게 확장하여 깔끔하고 자연스럽게 발전시킬 수 있어야 한다는 것입니다. 이 강연에서 Andrew Gerrand는 들어오는 TCP 연결 쌍을 매칭하는 간단한 "채팅 룰렛" 서버를 설명하고, Go의 동시성 메커니즘, 인터페이스, 표준 라이브러리를 사용하여 웹 인터페이스와 기타 기능으로 확장하는 방법을 소개합니다. 프로그램의 기능이 극적으로 변화하면서도, Go의 유연성 덕분에 원래의 디자인이 유지됩니다.
;[[Go 동시성 패턴]]
동시성은 고성능 네트워크 서비스를 설계하는 핵심입니다. Go의 동시성 원시 함수(고루틴과 채널)는 동시 실행을 간단하고 효율적으로 표현할 수 있는 수단을 제공합니다. 이 강연에서는 복잡한 동시성 문제를 간단한 Go 코드로 우아하게 해결하는 방법을 살펴봅니다.
;[[고급 Go 동시성 패턴]]
이 강연은 Go 동시성 패턴 강연을 확장하여 Go의 동시성 원시 함수에 대해 더 깊이 탐구합니다.
;더 많은 정보
더 많은 Go 강연을 보려면 [https://go.dev/talks Go Talks 사이트]와 [https://go.dev/wiki/GoTalks 위키 페이지]를 참고하세요.
==코드워크==
==코드워크==
;Go 프로그램의 가이드 투어
* [[Go에서의 일급 함수]]
* [[Go 코드워크 - 임의의 텍스트 생성: 마르코프 체인 알고리즘|임의의 텍스트 생성: 마르코프 체인 알고리즘]]
* [[Go 코드워크 - 통신을 통한 메모리 공유|통신을 통한 메모리 공유]]
;언어
* [[Go 블로그 - JSON-RPC: 인터페이스 이야기|JSON-RPC: 인터페이스 이야기]]
* [[Go의 선언 구문]]
* [[Go 블로그 - 지연, 패닉, 복구|지연, 패닉, 복구]]
* [[Go 동시성 패턴: 타임아웃, 이동]]
* [[Go 슬라이스: 사용법 및 내부구조]]
* [[GIF 디코더: Go 인터페이스 실습]]
* [[오류 핸들링과 Go]]
;패키지
* [[Go 블로그 - JSON과 Go|JSON과 Go]] - [https://go.dev/pkg/encoding/json/ json] 패키지 사용법
* [[Go 블로그 - 데이터의 덩어리|데이터의 덩어리]] - [https://go.dev/pkg/encoding/gob/ gob] 패키지의 설계 및 사용
* [[Go 블로그 - 반사의 법칙|반사의 법칙]] - [https://go.dev/pkg/reflect/ reflect] 패키지의 기본 원리
* [[Go 이미지 패키지]] - [https://go.dev/pkg/image/ image] 패키지의 기본 원리
* [[Go image/draw 패키지]] - [https://go.dev/pkg/image/draw/ image/draw] 패키지의 기본 원리
;모듈
* [[Go 모듈 사용하기]] - 간단한 프로젝트에서 모듈 사용 소개
* [[Go 모듈로 마이그레이션]] - 기존 프로젝트를 모듈로 변환
* [[Go 모듈 게시]] - 모듈의 새로운 버전을 다른 사람들에게 제공하는 방법
* [[Go 모듈: v2 및 그 이상]] - 주 버전 2 이상 생성 및 게시
* 모듈 호환성 유지 - 이전의 마이너/패치 버전과 모듈 호환성을 유지하는 방법
;도구
* [[Go 명령어 소개]] - 왜 만들었는지, 무엇인지, 무엇이 아닌지, 사용 방법
* [[Go 문서 주석]] - 좋은 프로그램 문서 작성법
* [[GDB로 Go 코드 디버깅]]
* [[Go 문서 - 데이터 경합 감지기|데이터 경합 감지기]] - 데이터 경합 감지기 사용 설명서
* [[Go 어셈블러의 빠른 가이드]] - Go가 사용하는 어셈블러 소개
* [[C? Go? Cgo!]] - cgo를 사용하여 C 코드 연결
* [[Go 프로그램 프로파일링]]
* [[Go 경합 감지기 소개]] - 경합 감지기 소개
==위키==
[[Go 위키]]는 Go 커뮤니티에서 관리하며, Go 언어, 도구, 기타 자료에 관한 글을 포함하고 있습니다.
더 많은 Go [[Go 위키: 학습|학습]] 자료는 [[Go 위키|위키]]의 학습 페이지를 참조하십시오.

2024년 7월 15일 (월) 23:00 기준 최신판

1 개요[ | ]

Documentation
문서

https://go.dev/doc/


Go 프로그래밍 언어는 프로그래머의 생산성을 높이기 위한 오픈 소스 프로젝트입니다.

Go는 표현력 있고 간결하며 깔끔하고 효율적입니다. 동시성 메커니즘 덕분에 멀티코어와 네트워크 머신을 최대한 활용하는 프로그램을 쉽게 작성할 수 있고, 새로운 타입 시스템을 통해 유연하고 모듈식 프로그램 구축이 가능합니다. Go는 머신 코드로 빠르게 컴파일되지만 가비지 수집의 편리함과 런타임 리플렉션의 힘을 가지고 있습니다. 빠르고 정적으로 타이핑되고 컴파일된 언어로, 동적으로 타이핑되고 인터프리터 언어처럼 느껴집니다.

2 시작하기[ | ]

Go 설치하기

Go를 다운로드하고 설치하는 방법에 대한 지침입니다.

튜토리얼: 시작하기

Hello, World 튜토리얼로 시작하세요. Go 코드, 도구, 패키지 및 모듈에 대해 조금 배웁니다.

튜토리얼: 모듈 생성

함수, 오류 처리, 배열, 맵, 단위 테스트 및 컴파일을 소개하는 짧은 주제의 튜토리얼입니다.

튜토리얼: 다중 모듈 작업공간 시작하기

Go에서 다중 모듈 작업 공간을 생성하고 사용하는 기본 사항을 소개합니다. 다중 모듈 작업 공간은 여러 모듈에서 변경 작업을 할 때 유용합니다.

튜토리얼: Go와 Gin을 사용하여 RESTful API 개발하기

Go와 Gin 웹 프레임워크를 사용하여 RESTful 웹 서비스 API를 작성하는 기본 사항을 소개합니다.

튜토리얼: 제네릭 시작하기

제네릭을 사용하면 호출 코드가 제공하는 유형 집합과 함께 작동하도록 작성된 함수나 유형을 선언하고 사용할 수 있습니다.

튜토리얼: 퍼징 시작하기

퍼징을 통해 테스트에 입력을 생성하여 놓칠 수 있는 엣지 케이스와 보안 문제를 잡아낼 수 있습니다.

웹 애플리케이션 작성하기

간단한 웹 애플리케이션을 작성합니다.

Go 코드 작성 방법

이 문서는 모듈 내부에서 간단한 Go 패키지 세트를 개발하는 방법을 설명하고, go 명령어를 사용하여 패키지를 빌드하고 테스트하는 방법을 보여줍니다.

Go 투어

네 부분으로 구성된 Go에 대한 대화형 소개입니다. 첫 번째 부분은 기본 구문과 데이터 구조를 다루고, 두 번째 부분은 메소드와 인터페이스를 논의하며, 세 번째 부분은 제네릭에 대해 설명하고, 네 번째 부분은 Go의 동시성 원리를 소개합니다. 각 섹션은 배운 내용을 연습할 수 있는 몇 가지 연습 문제로 마무리됩니다. 온라인으로 투어를 하거나 다음 명령어로 로컬에 설치할 수 있습니다:

$ go install golang.org/x/website/tour@latest

이 명령어는 투어 바이너리를 GOPATH의 bin 디렉토리에 배치합니다.

3 Go 사용과 이해[ | ]

효과적인 Go

명확하고 관용적인 Go 코드를 작성하기 위한 팁을 제공하는 문서입니다. 새로운 Go 프로그래머라면 꼭 읽어야 할 문서로, 투어와 언어 명세서를 보완합니다. 투어와 언어 명세서를 먼저 읽어야 합니다.

자주 묻는 질문 (FAQ)

Go에 대한 일반적인 질문에 대한 답변을 제공합니다.

편집기 플러그인 및 IDE

Go 지원과 함께 자주 사용되는 편집기 플러그인과 IDE를 요약한 문서입니다.

진단

Go 프로그램의 문제를 진단하기 위한 도구와 방법론을 요약합니다.

Go 가비지 컬렉터 가이드

Go가 메모리를 관리하는 방법과 이를 최대한 활용하는 방법을 설명하는 문서입니다.

의존성 관리

코드에서 외부 패키지를 사용할 때, 그 패키지들(모듈로 배포됨)이 의존성이 됩니다.

퍼징

Go 퍼징에 대한 메인 문서 페이지입니다.

Go 애플리케이션의 커버리지

Go 애플리케이션의 커버리지 테스트에 대한 메인 문서 페이지입니다.

프로파일에 따른 최적화

Go 애플리케이션의 프로파일에 따른 최적화(PGO)에 대한 메인 문서 페이지입니다.

4 레퍼런스[ | ]

패키지 문서

Go 표준 라이브러리에 대한 문서.

명령어 문서

Go 도구에 대한 문서.

언어 사양

공식 Go 언어 사양.

Go 모듈 레퍼런스

Go의 의존성 관리 시스템에 대한 자세한 참조 매뉴얼.

go.mod 파일 레퍼런스

go.mod 파일에 포함된 지시어에 대한 레퍼런스.

Go 메모리 모델

하나의 고루틴에서 변수에 대한 읽기가 다른 고루틴에서 생성된 값을 관측할 수 있는 조건을 명시한 문서.

기여 가이드

Go에 기여하는 방법에 대한 가이드.

릴리스 이력

Go 릴리스 간의 변경사항 요약.

5 데이터베이스 접근[ | ]

튜토리얼: 관계형 데이터베이스 접근하기

Go와 표준 라이브러리의 database/sql 패키지를 사용하여 관계형 데이터베이스에 접근하는 기본 사항을 소개합니다.

관계형 데이터베이스 접근

Go의 데이터 접근 기능에 대한 개요입니다.

데이터베이스 핸들 열기

Go 데이터베이스 핸들을 사용하여 데이터베이스 작업을 실행할 수 있습니다. 데이터베이스 연결 속성으로 핸들을 열면 핸들이 연결 풀을 관리하여 대신 연결을 처리합니다.

데이터를 반환하지 않는 SQL 문 실행하기

SQL INSERT, UPDATE, DELETE와 같이 데이터베이스를 변경할 수 있는 SQL 작업을 위해 Exec 메소드를 사용합니다.

데이터 쿼리하기

쿼리에서 데이터를 반환하는 SELECT 문을 위해 Query 또는 QueryRow 메소드를 사용합니다.

프리페어드 문 사용하기

반복 사용을 위해 준비된 문을 정의하면, 데이터베이스 작업을 수행할 때마다 문을 다시 생성하는 오버헤드를 피할 수 있어 코드 실행이 조금 더 빨라질 수 있습니다.

트랜잭션 실행하기

sql.TxCommitRollback을 포함한 트랜잭션 관련 메소드뿐만 아니라 일반적인 데이터베이스 작업을 수행하는 데 사용하는 메소드를 내보냅니다.

진행 중인 데이터베이스 작업 취소하기

context.Context를 사용하여 더 이상 필요하지 않은 작업의 함수 호출과 서비스를 조기에 중지하고 오류를 반환할 수 있습니다.

연결 관리하기

일부 고급 프로그램에서는 연결 풀 매개변수를 조정하거나 연결을 명시적으로 작업해야 할 필요가 있을 수 있습니다.

SQL 인젝션 위험 방지하기

SQL 매개변수 값을 sql 패키지 함수 인수로 제공하여 SQL 인젝션 위험을 피할 수 있습니다.

6 모듈 개발[ | ]

모듈 개발 및 배포

관련 패키지를 모듈로 수집하여 다른 개발자가 사용할 수 있도록 배포할 수 있습니다. 이 주제는 모듈 개발 및 배포 개요를 제공합니다.

Go 모듈 릴리스 및 버전 관리 워크플로우

다른 개발자가 사용할 모듈을 개발할 때, 모듈을 사용하는 개발자들에게 신뢰할 수 있고 일관된 경험을 제공하기 위해 따를 수 있는 워크플로우가 있습니다. 이 주제는 그 워크플로우의 고급 단계를 설명합니다.

Go 모듈 소스 관리

다른 사람들이 사용할 수 있도록 모듈을 개발할 때, 저장소 규칙을 따르면 모듈을 다른 개발자가 더 쉽게 사용할 수 있습니다. 이 주제에서는 이러한 저장소 규칙에 대해 설명합니다.

Go 모듈 조직화

일반적인 Go 프로젝트에서 파일과 디렉토리를 구성하는 올바른 방법은 무엇일까요? 이 주제에서는 모듈의 종류에 따라 흔히 사용되는 레이아웃을 설명합니다.

Go 모듈 - 메이저 버전 업데이트 개발 주요 버전 업데이트는 모듈 사용자에게 매우 혼란을 줄 수 있습니다. 이는 중단 변경을 포함하고 새로운 모듈을 나타내기 때문입니다. 이 주제에서는 이에 대해 자세히 설명합니다.

Go 모듈 배포

다른 개발자가 모듈을 사용할 수 있도록 하려면, 모듈을 배포하여 Go 도구에서 볼 수 있도록 해야 합니다. 모듈을 배포한 후, 개발자가 go get과 같은 명령어를 실행하여 모듈의 패키지를 가져올 수 있게 됩니다.

모듈 버전 번호

모듈 개발자는 모듈의 버전 번호 각 부분을 사용하여 버전의 안정성과 이전 버전과의 호환성을 신호합니다. 각 새로운 릴리스마다 모듈의 릴리스 버전 번호는 이전 릴리스 이후 모듈의 변경사항의 성격을 반영합니다.

7 토크[ | ]

Go 비디오 투어

Go 언어의 빠르고, 재미있고, 생산적인 세 가지 요소: 인터페이스, 리플렉션, 동시성. 이를 시연하기 위해 간단한 웹 크롤러를 만들어 보입니다.

우아하게 성장하는 코드

Go의 주요 설계 목표 중 하나는 코드의 적응성입니다. 즉, 단순한 디자인을 쉽게 확장하여 깔끔하고 자연스럽게 발전시킬 수 있어야 한다는 것입니다. 이 강연에서 Andrew Gerrand는 들어오는 TCP 연결 쌍을 매칭하는 간단한 "채팅 룰렛" 서버를 설명하고, Go의 동시성 메커니즘, 인터페이스, 표준 라이브러리를 사용하여 웹 인터페이스와 기타 기능으로 확장하는 방법을 소개합니다. 프로그램의 기능이 극적으로 변화하면서도, Go의 유연성 덕분에 원래의 디자인이 유지됩니다.

Go 동시성 패턴

동시성은 고성능 네트워크 서비스를 설계하는 핵심입니다. Go의 동시성 원시 함수(고루틴과 채널)는 동시 실행을 간단하고 효율적으로 표현할 수 있는 수단을 제공합니다. 이 강연에서는 복잡한 동시성 문제를 간단한 Go 코드로 우아하게 해결하는 방법을 살펴봅니다.

고급 Go 동시성 패턴

이 강연은 Go 동시성 패턴 강연을 확장하여 Go의 동시성 원시 함수에 대해 더 깊이 탐구합니다.

더 많은 정보

더 많은 Go 강연을 보려면 Go Talks 사이트위키 페이지를 참고하세요.

8 코드워크[ | ]

Go 프로그램의 가이드 투어
언어
패키지
모듈
도구

9 위키[ | ]

Go 위키는 Go 커뮤니티에서 관리하며, Go 언어, 도구, 기타 자료에 관한 글을 포함하고 있습니다.

더 많은 Go 학습 자료는 위키의 학습 페이지를 참조하십시오.

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}