효과적인 Go

Jmnote (토론 | 기여)님의 2024년 7월 5일 (금) 19:55 판 (→‎소개)

1 개요

Crystal Clear action info.png 작성 중인 문서입니다.
Effective Go
이펙티브 Go, 효과적인 Go

https://go.dev/doc/effective_go

2 소개

Go는 새로운 언어입니다. 기존 언어에서 아이디어를 차용했지만, 효과적인 Go 프로그램은 기존 언어로 작성된 프로그램과 성격이 다릅니다. C++ 또는 Java 프로그램을 Go로 직접 번역하는 것은 만족스러운 결과가 되지 못할 가능성이 큽니다. Java 프로그램은 Java로 작성되어야지 Go로 작성되지 않습니다. 반면, Go의 관점에서 문제를 생각하면 성공적이지만 상당히 다른 프로그램을 만들 수 있습니다. 즉, Go를 잘 작성하려면 Go의 속성과 관용구를 이해하는 것이 중요합니다. 또한, 이름 지정, 포맷팅, 프로그램 구성 등 Go 프로그래밍의 기존 규칙을 아는 것도 중요합니다. 그래야 작성한 프로그램이 다른 Go 프로그래머에게 쉽게 이해될 수 있습니다.

이 문서는 명확하고 관용적인 Go 코드를 작성하기 위한 팁을 제공합니다. 언어 사양, Go 투어, Go 코드 작성 방법과 같은 문서를 먼저 읽은 후 보충 자료로 활용하시기 바랍니다.

2022년 1월 추가사항: 이 문서는 2009년 Go의 출시를 위해 작성되었으며, 그 이후로 크게 업데이트되지 않았습니다. 언어 자체를 이해하는 데는 좋은 가이드이지만, 언어의 안정성 덕분에 라이브러리에 대해 거의 언급하지 않으며, 빌드 시스템, 테스트, 모듈, 다형성 등 Go 생태계의 중요한 변화에 대해서는 아무런 언급이 없습니다. 너무 많은 변화가 있었고, 현대 Go 사용법을 잘 설명하는 많은 문서, 블로그, 책들이 존재하기 때문에 이 문서를 업데이트할 계획은 없습니다. 효과적인 Go는 여전히 유용하지만, 독자는 이 문서가 완전한 가이드가 아님을 이해해야 합니다. 자세한 내용은 이슈 28782를 참조하세요.

2.1 예시

3 포맷팅

4 주석

5 이름

5.1 패키지 이름

5.2 게터

5.3 인터페이스 이름

5.4 MixedCaps

6 세미콜론

7 제어 구조

7.1 If

7.2 재선언과 재할당

7.3 For

7.4 Switch

7.5 타입 switch

8 함수

8.1 멀티 반환 값

8.2 명명된 결과 파라미터

8.3 Defer

9 데이터

9.1 new로 할당

9.2 생성자와 복합 리터럴

9.3 make로 할당

9.4 배열

9.5 슬라이스

9.6 2차원 슬라이스

9.7

9.8 출력

9.9 덧붙이기

10 초기화

10.1 상수

10.2 변수

10.3 init 함수

11 메소드

11.1 포인터 vs 값

12 인터페이스와 기타 타입

12.1 인터페이스

12.2 변환

12.3 인터페이스 변환과 타입 어썰션

12.4 일반성

12.5 인터페이스와 메소드

13 빈 식별자

13.1 멀티 할당에서 빈 식별자

13.2 미사용 임포트와 변수

13.3 사이드 이펙트용 임포트

13.4 인터페이스 체크

14 임베딩

15 동시성

15.1 통신으로 공유

15.2 고루틴

15.3 채널

15.4 채널의 채널

15.5 병렬화

15.6 누수 버퍼

16 오류

16.1 패닉

16.2 복구

17 웹 서버

18 같이 보기

19 참고

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