diff --git a/README.md b/README.md
index 8f9c2ae..95bdbf0 100644
--- a/README.md
+++ b/README.md
@@ -79,29 +79,29 @@ row before the line.
- [성능(Performance)](#%ec%84%b1%eb%8a%a5performance)
- [`fmt` 보다 `strconv` 선호](#fmt-%eb%b3%b4%eb%8b%a4-strconv-%ec%84%a0%ed%98%b8)
- [string-to-byte 변환을 피해라](#string-to-byte-%eb%b3%80%ed%99%98%ec%9d%84-%ed%94%bc%ed%95%b4%eb%9d%bc)
- - [Style](#style)
- - [Group Similar Declarations](#group-similar-declarations)
- - [Import Group Ordering](#import-group-ordering)
- - [Package Names](#package-names)
- - [Function Names](#function-names)
- - [Import Aliasing](#import-aliasing)
- - [Function Grouping and Ordering](#function-grouping-and-ordering)
- - [Reduce Nesting](#reduce-nesting)
- - [Unnecessary Else](#unnecessary-else)
- - [Top-level Variable Declarations](#top-level-variable-declarations)
- - [Prefix Unexported Globals with _](#prefix-unexported-globals-with)
- - [Embedding in Structs](#embedding-in-structs)
- - [Use Field Names to initialize Structs](#use-field-names-to-initialize-structs)
- - [Local Variable Declarations](#local-variable-declarations)
- - [nil is a valid slice](#nil-is-a-valid-slice)
- - [Reduce Scope of Variables](#reduce-scope-of-variables)
- - [Avoid Naked Parameters](#avoid-naked-parameters)
- - [Use Raw String Literals to Avoid Escaping](#use-raw-string-literals-to-avoid-escaping)
- - [Initializing Struct References](#initializing-struct-references)
- - [Format Strings outside Printf](#format-strings-outside-printf)
- - [Naming Printf-style Functions](#naming-printf-style-functions)
- - [Patterns](#patterns)
- - [Test Tables](#test-tables)
+ - [스타일 (Style)](#%ec%8a%a4%ed%83%80%ec%9d%bc-style)
+ - [그룹 유사 선언 (Group Similar Declarations)](#%ea%b7%b8%eb%a3%b9-%ec%9c%a0%ec%82%ac-%ec%84%a0%ec%96%b8-group-similar-declarations)
+ - [Import 그룹 정리/배치 (Import Group Ordering)](#import-%ea%b7%b8%eb%a3%b9-%ec%a0%95%eb%a6%ac%eb%b0%b0%ec%b9%98-import-group-ordering)
+ - [패키지 이름 (Package Names)](#%ed%8c%a8%ed%82%a4%ec%a7%80-%ec%9d%b4%eb%a6%84-package-names)
+ - [함수 이름 (Function Names)](#%ed%95%a8%ec%88%98-%ec%9d%b4%eb%a6%84-function-names)
+ - [Import 별칭 (Import Aliasing)](#import-%eb%b3%84%ec%b9%ad-import-aliasing)
+ - [함수 그룹화와 정렬/배치 (Function Grouping and Ordering)](#%ed%95%a8%ec%88%98-%ea%b7%b8%eb%a3%b9%ed%99%94%ec%99%80-%ec%a0%95%eb%a0%ac%eb%b0%b0%ec%b9%98-function-grouping-and-ordering)
+ - [중첩 감소 (Reduce Nesting)](#%ec%a4%91%ec%b2%a9-%ea%b0%90%ec%86%8c-reduce-nesting)
+ - [불필요한 else (Unnecessary Else)](#%eb%b6%88%ed%95%84%ec%9a%94%ed%95%9c-else-unnecessary-else)
+ - [최상위 변수 선언 (Top-level Variable Declarations)](#%ec%b5%9c%ec%83%81%ec%9c%84-%eb%b3%80%ec%88%98-%ec%84%a0%ec%96%b8-top-level-variable-declarations)
+ - [수출되지 않은 전역에 _을 붙여라 (Prefix Unexported Globals with _)](#%ec%88%98%ec%b6%9c%eb%90%98%ec%a7%80-%ec%95%8a%ec%9d%80-%ec%a0%84%ec%97%ad%ec%97%90-%ec%9d%84-%eb%b6%99%ec%97%ac%eb%9d%bc-prefix-unexported-globals-with)
+ - [구조체에서의 임베딩 (Embedding in Structs)](#%ea%b5%ac%ec%a1%b0%ec%b2%b4%ec%97%90%ec%84%9c%ec%9d%98-%ec%9e%84%eb%b2%a0%eb%94%a9-embedding-in-structs)
+ - [구조체 초기화를 위해 필드을 사용해라 (Use Field Names to initialize Structs)](#%ea%b5%ac%ec%a1%b0%ec%b2%b4-%ec%b4%88%ea%b8%b0%ed%99%94%eb%a5%bc-%ec%9c%84%ed%95%b4-%ed%95%84%eb%93%9c%ec%9d%84-%ec%82%ac%ec%9a%a9%ed%95%b4%eb%9d%bc-use-field-names-to-initialize-structs)
+ - [지역 변수 선언 (Local Variable Declarations)](#%ec%a7%80%ec%97%ad-%eb%b3%80%ec%88%98-%ec%84%a0%ec%96%b8-local-variable-declarations)
+ - [nil은 유효한 슬라이스 (nil is a valid slice)](#nil%ec%9d%80-%ec%9c%a0%ed%9a%a8%ed%95%9c-%ec%8a%ac%eb%9d%bc%ec%9d%b4%ec%8a%a4-nil-is-a-valid-slice)
+ - [변수의 범위를 줄여라 (Reduce Scope of Variables)](#%eb%b3%80%ec%88%98%ec%9d%98-%eb%b2%94%ec%9c%84%eb%a5%bc-%ec%a4%84%ec%97%ac%eb%9d%bc-reduce-scope-of-variables)
+ - [Naked 매개변수를 피해라 (Avoid Naked Parameters)](#naked-%eb%a7%a4%ea%b0%9c%eb%b3%80%ec%88%98%eb%a5%bc-%ed%94%bc%ed%95%b4%eb%9d%bc-avoid-naked-parameters)
+ - [이스케이핑을 피하기 위해 원시 문자 리터럴 사용 (Use Raw String Literals to Avoid Escaping)](#%ec%9d%b4%ec%8a%a4%ec%bc%80%ec%9d%b4%ed%95%91%ec%9d%84-%ed%94%bc%ed%95%98%ea%b8%b0-%ec%9c%84%ed%95%b4-%ec%9b%90%ec%8b%9c-%eb%ac%b8%ec%9e%90-%eb%a6%ac%ed%84%b0%eb%9f%b4-%ec%82%ac%ec%9a%a9-use-raw-string-literals-to-avoid-escaping)
+ - [구조체 참조 초기화 (Initializing Struct References)](#%ea%b5%ac%ec%a1%b0%ec%b2%b4-%ec%b0%b8%ec%a1%b0-%ec%b4%88%ea%b8%b0%ed%99%94-initializing-struct-references)
+ - [Printf외부의 문자열 형식 (Format Strings outside Printf)](#printf%ec%99%b8%eb%b6%80%ec%9d%98-%eb%ac%b8%ec%9e%90%ec%97%b4-%ed%98%95%ec%8b%9d-format-strings-outside-printf)
+ - [Printf-스타일 함수의 이름 (Naming Printf-style Functions)](#printf-%ec%8a%a4%ed%83%80%ec%9d%bc-%ed%95%a8%ec%88%98%ec%9d%98-%ec%9d%b4%eb%a6%84-naming-printf-style-functions)
+ - [패턴 (Patterns)](#%ed%8c%a8%ed%84%b4-patterns)
+ - [테스트 테이블 (Test Tables)](#%ed%85%8c%ec%8a%a4%ed%8a%b8-%ed%85%8c%ec%9d%b4%eb%b8%94-test-tables)
- [Functional Options](#functional-options)
## 소개 (Introduction)
@@ -1000,11 +1000,11 @@ BenchmarkGood-4 500000000 3.25 ns/op
-## Style
+## 스타일 (Style)
-### Group Similar Declarations
+### 그룹 유사 선언 (Group Similar Declarations)
-Go supports grouping similar declarations.
+Go는 유사한 선언 그룹화를 지원한다.
Bad | Good |
@@ -1028,7 +1028,7 @@ import (
-This also applies to constants, variables, and type declarations.
+이는 또한 상수, 변수, 그리고 타입 선언에서도 유효하다.
Bad | Good |
@@ -1073,7 +1073,7 @@ type (
-Only group related declarations. Do not group declarations that are unrelated.
+오직 관련된 선언만 그룹화 할 것. 관련되지 않은 선언들에 대해서는 그룹화 하지 말것.
Bad | Good |
@@ -1108,8 +1108,7 @@ const ENV_VAR = "MY_ENV"
-Groups are not limited in where they can be used. For example, you can use them
-inside of functions.
+그룹화를 사용하는 장소는 제한되어 있지 않다. 예를 들어, 함수 내에서 그룹화는 사용 가능 하다.
Bad | Good |
@@ -1143,14 +1142,14 @@ func f() string {
-### Import Group Ordering
+### Import 그룹 정리/배치 (Import Group Ordering)
-There should be two import groups:
+2가지 import 그룹들이 존재한다:
-- Standard library
-- Everything else
+- 표준 라이브러리 (Standard library)
+- 그 외 모든 것 (Everything else)
-This is the grouping applied by goimports by default.
+이는 디폴트로 `goimports`에 의해서 적용되는 그룹들이다.
Bad | Good |
@@ -1181,35 +1180,30 @@ import (
-### Package Names
+### 패키지 이름 (Package Names)
-When naming packages, choose a name that is:
+패키지 이름을 정할 때, 아래와 같은 이름을 선택하라:
-- All lower-case. No capitals or underscores.
-- Does not need to be renamed using named imports at most call sites.
-- Short and succinct. Remember that the name is identified in full at every call
- site.
-- Not plural. For example, `net/url`, not `net/urls`.
-- Not "common", "util", "shared", or "lib". These are bad, uninformative names.
+- 모두 알파벳 소문자 사용, 대문자와 언더스코어 (_)는 사용하지 말 것.
+- 대부분의 호출 지점(call sites)에서 named import를 사용하여 재명명(renamed)을 할 필요가 없다.
+- 짧고 간결하게. 이름(name)은 모든 호출 지점(call site)에서 식별됨을 상기하라.
+- 복수형(plural) 사용 금지. 예를 들어, `net/urls` 가 아닌 `net/url`.
+- "common", "util", "shared", 또는 "lib"의 용어 사용 금지. 정보가 없는 나쁜 이름들임.
-See also [Package Names] and [Style guideline for Go packages].
+또한 [Package Names] 와 [Style guideline for Go packages]를 참고하기 바란다.
[Package Names]: https://blog.golang.org/package-names
[Style guideline for Go packages]: https://rakyll.org/style-packages/
-### Function Names
+### 함수 이름 (Function Names)
-We follow the Go community's convention of using [MixedCaps for function
-names]. An exception is made for test functions, which may contain underscores
-for the purpose of grouping related test cases, e.g.,
-`TestMyFunction_WhatIsBeingTested`.
+우리는 Go 커뮤니티의 [MixedCaps for function names]의 사용에 의한 컨벤션을 따른다. 테스트 함수(test functions)는 예외이다. 이는 관련 테스트케이스를 그룹화 할 목적으로 언더스코어(_)를 포함할 수 있다, 예를들어, `TestMyFunction_WhatIsBeingTested`.
[MixedCaps for function names]: https://golang.org/doc/effective_go.html#mixed-caps
-### Import Aliasing
+### Import 별칭 (Import Aliasing)
-Import aliasing must be used if the package name does not match the last
-element of the import path.
+패키지 이름이 import path의 마지막 요소와 일치하지 않을 경우 별명을 사용해야 한다.
```go
import (
@@ -1220,8 +1214,7 @@ import (
)
```
-In all other scenarios, import aliases should be avoided unless there is a
-direct conflict between imports.
+다른 모든 시나리오의 경우, import 별칭의 사용은 import하면서 두 import간 직접적 충돌(import direct conflict)이 발생하지 않는 한 지양해야 한다.
Bad | Good |
@@ -1253,19 +1246,17 @@ import (
-### Function Grouping and Ordering
+### 함수 그룹화와 정렬/배치 (Function Grouping and Ordering)
-- Functions should be sorted in rough call order.
-- Functions in a file should be grouped by receiver.
+- 함수는 대략적 호출 순서에 의해서 정렬되어야 한다.
+- 파일내에서의 함수는 리시버에 의해서 그룹지어져야 한다.
-Therefore, exported functions should appear first in a file, after
-`struct`, `const`, `var` definitions.
+그러므로, 수출되는 함수 (exported function)는 파일 내의 `struct`, `const`, `var`의 정의 구문 이후의 시작 부분에 나타나야 한다.
-A `newXYZ()`/`NewXYZ()` may appear after the type is defined, but before the
-rest of the methods on the receiver.
+`newXYZ()`/`NewXYZ()`가 타입이 정의된 뒷부분에 나타날 수 있지만, 이는 나머지 수신자(receiver)의 메서드들 전에 나타나야 한다 (may appear after the type is defined, but before the
+rest of the methods on the receiver.)
-Since functions are grouped by receiver, plain utility functions should appear
-towards the end of the file.
+함수들은 수신자에 의해 그룹화 되므로, 일반 유틸리티 함수들(plain utility functions)는 파일의 뒷부분에 나타나야 한다.
Bad | Good |
@@ -1309,11 +1300,9 @@ func calcCost(n []int) int {...}
-### Reduce Nesting
+### 중첩 감소 (Reduce Nesting)
-Code should reduce nesting where possible by handling error cases/special
-conditions first and returning early or continuing the loop. Reduce the amount
-of code that is nested multiple levels.
+코드는 에러 케이스 혹은 특수 조건(error cases / special conditions)을 먼저 처리하고 루프를 일찍 리턴하거나 계속 지속함으로써 가능한 중첩(nesting)을 줄일 수 있어야 한다. 여러 레벨로 중첩된(nested multiple levels)코드의 양을 줄이도록 해라.
Bad | Good |
@@ -1355,10 +1344,9 @@ for _, v := range data {
-### Unnecessary Else
+### 불필요한 else (Unnecessary Else)
-If a variable is set in both branches of an if, it can be replaced with a
-single if.
+변수가 if의 두 가지 분기문에 의해서 설정될 경우, 이는 단일 `if`문 (simple if)으로 대체 될 수 있다.
Bad | Good |
@@ -1386,10 +1374,9 @@ if b {
-### Top-level Variable Declarations
+### 최상위 변수 선언 (Top-level Variable Declarations)
-At the top level, use the standard `var` keyword. Do not specify the type,
-unless it is not the same type as the expression.
+최상위 레벨에서 (At the top level), 표준 `var` 키워드를 사용해라. 표현식(expression)r과같은 같은 타입이 아닌 이상, 타입을 특정짓지 말라.
Bad | Good |
@@ -1406,8 +1393,8 @@ func F() string { return "A" }
```go
var _s = F()
-// Since F already states that it returns a string, we don't need to specify
-// the type again.
+// F는 이미 문자열을 반환한다고 명시하고 있기 때문에
+// 타입을 다시 지정할 필요가 없다.
func F() string { return "A" }
```
@@ -1415,8 +1402,7 @@ func F() string { return "A" }
-Specify the type if the type of the expression does not match the desired type
-exactly.
+표현식의 타입이 원하는 타입과 정확하게 일치하지 않는 경우 타입을 지정해라.
```go
type myError struct{}
@@ -1426,19 +1412,16 @@ func (myError) Error() string { return "error" }
func F() myError { return myError{} }
var _e error = F()
-// F returns an object of type myError but we want error.
+// F는 myError 타입의 객체를 반환하지만, 우리가 원하는 것은 error
```
-### Prefix Unexported Globals with _
+### 수출되지 않은 전역에 _을 붙여라 (Prefix Unexported Globals with _)
-Prefix unexported top-level `var`s and `const`s with `_` to make it clear when
-they are used that they are global symbols.
+수출되지 않은 최상위(top-level) `var`와 `const`에 접두사 `_`를 붙임으로써 그들이 사용될 때, 전역 기호(global symbols)임을 명확하게 해라.
-Exception: Unexported error values, which should be prefixed with `err`.
+예외: 수출되지 않는 에러 값 (Unexported error values)은 `err`의 접두사를 가져야 한다.
-Rationale: Top-level variables and constants have a package scope. Using a
-generic name makes it easy to accidentally use the wrong value in a different
-file.
+이유: 최상위 변수 및 상수 (Top-level variables and constants)는 패키지 범위(package scope)를 가진다. 제네릭 이름(generic names)을 사용하는 것은 다른 파일에서 잘못된 값을 실수로 쉽게 사용할 수 있다.
Bad | Good |
@@ -1460,8 +1443,8 @@ func Bar() {
...
fmt.Println("Default port", defaultPort)
- // We will not see a compile error if the first line of
- // Bar() is deleted.
+ // 만약 Bar()의 첫번째 라인이 지워지면
+ // 컴파일 에러에 직면하지 않는다.
}
```
@@ -1479,11 +1462,9 @@ const (
-### Embedding in Structs
+### 구조체에서의 임베딩 (Embedding in Structs)
-Embedded types (such as mutexes) should be at the top of the field list of a
-struct, and there must be an empty line separating embedded fields from regular
-fields.
+뮤텍스와 같은 임베드된 타입은 구조체의 필드 목록 가장 상위층에 있어야 하고, 임베드 된 필드를 일반 필드와 분리하는 empty ilie이 있어야 한다.
Bad | Good |
@@ -1510,10 +1491,9 @@ type Client struct {
-### Use Field Names to initialize Structs
+### 구조체 초기화를 위해 필드을 사용해라 (Use Field Names to initialize Structs)
-You should almost always specify field names when initializing structs. This is
-now enforced by [`go vet`].
+구조체를 초기화 할 때에는 거의 대부분 필드 명을 지정해야 한다. 이것은 이제 [`go vet`]에 의해서 강제하고 있다.
[`go vet`]: https://golang.org/cmd/vet/
@@ -1539,8 +1519,7 @@ k := User{
-Exception: Field names *may* be omitted in test tables when there are 3 or
-fewer fields.
+예외: 테스트 테이블에서 필드명은 3개 일때 혹은 이보다 적을 때 생략될 수 있음.
```go
tests := []struct{
@@ -1552,10 +1531,9 @@ tests := []struct{
}
```
-### Local Variable Declarations
+### 지역 변수 선언 (Local Variable Declarations)
-Short variable declarations (`:=`) should be used if a variable is being set to
-some value explicitly.
+변수를 명시적으로 특정 값으로 설정하는 경우 짧은 변수 선언 (Short variable declarations, `:=`)을 사용해야 한다.
Bad | Good |
@@ -1575,8 +1553,7 @@ s := "foo"
-However, there are cases where the default value is clearer when the `var`
-keyword is use. [Declaring Empty Slices], for example.
+그러나, `var` 키워드를 사용할 때 기본값(default value)가 더 명확할 때가 있다. 예를 들면, [Declaring Empty Slices].
[Declaring Empty Slices]: https://github.com/golang/go/wiki/CodeReviewComments#declaring-empty-slices
@@ -1612,12 +1589,11 @@ func f(list []int) {
-### nil is a valid slice
+### nil은 유효한 슬라이스 (nil is a valid slice)
-`nil` is a valid slice of length 0. This means that,
+`nil`은 길이가 0인 유요한 슬라이스이다. 이는 다음과 같음을 의미한다:
-- You should not return a slice of length zero explicitly. Return `nil`
- instead.
+- 길이가 0인 슬라이스를 명시적으로 반환해서는 안된다. 대신 nil을 반환하라.
Bad | Good |
@@ -1641,8 +1617,7 @@ func f(list []int) {
-- To check if a slice is empty, always use `len(s) == 0`. Do not check for
- `nil`.
+- 슬라이스가 비어있는지 확인하기 위해서 항상 `len(s) == 0`을 사용해라. `nil`을 체크하지 말 것.
Bad | Good |
@@ -1666,8 +1641,7 @@ func f(list []int) {
-- The zero value (a slice declared with `var`) is usable immediately without
- `make()`.
+- 제로 값(The zero value), `var`로 선언된 슬라이스의 경우,은 `make()`없이 바로 사용 할 수 있다.
Bad | Good |
@@ -1704,10 +1678,9 @@ func f(list []int) {
-### Reduce Scope of Variables
+### 변수의 범위를 줄여라 (Reduce Scope of Variables)
-Where possible, reduce scope of variables. Do not reduce the scope if it
-conflicts with [Reduce Nesting](#reduce-nesting).
+가능한 변수의 범위를 줄여라. 만약 [Reduce Nesting](#reduce-nesting)과의 출돌하는 경우 범위를 줄이면 안된다.
Bad | Good |
@@ -1732,8 +1705,7 @@ if err := ioutil.WriteFile(name, data, 0644); err != nil {
-If you need a result of a function call outside of the if, then you should not
-try to reduce the scope.
+`if`외부에서 함수 호출의 결과가 필요한 경우, 범위를 줄이려고 시도해서는 안된다.
Bad | Good |
@@ -1773,10 +1745,9 @@ return nil
-### Avoid Naked Parameters
+### Naked 매개변수를 피해라 (Avoid Naked Parameters)
-Naked parameters in function calls can hurt readability. Add C-style comments
-(`/* ... */`) for parameter names when their meaning is not obvious.
+함수 호출에서의 naked parameteres는 가독성을 떨어 뜨릴 수 있다. 의미가 명확하지 않은 경우, C언어 스타일의 주석 (`/* ... */`)을 추가하기 바란다.
Bad | Good |
@@ -1800,9 +1771,7 @@ printInfo("foo", true /* isLocal */, true /* done */)
-Better yet, replace naked `bool` types with custom types for more readable and
-type-safe code. This allows more than just two states (true/false) for that
-parameter in the future.
+더 나은 방법은, naked `bool` 타입을 더 읽기 쉽고 타입-안정적(type-safe)인 코드를 위해서 사용자 정의 타입(custom type)으로 대체해라. 이를 통해서 향후 해당 매개변수에 대해서 두개 이상의 상태 (true/false)를 허용할 수 있다.
```go
type Region int
@@ -1817,17 +1786,15 @@ type Status int
const (
StatusReady = iota + 1
StatusDone
- // Maybe we will have a StatusInProgress in the future.
+ // 향후에 StatusInProgress를 추가할 수 있다.
)
func printInfo(name string, region Region, status Status)
```
-### Use Raw String Literals to Avoid Escaping
+### 이스케이핑을 피하기 위해 원시 문자 리터럴 사용 (Use Raw String Literals to Avoid Escaping)
-Go supports [raw string literals](https://golang.org/ref/spec#raw_string_lit),
-which can span multiple lines and include quotes. Use these to avoid
-hand-escaped strings which are much harder to read.
+Go는 [raw string literals](https://golang.org/ref/spec#raw_string_lit)을 지원하며 여러 줄에 걸쳐친 코드와 따옴표를 함께 포함할 수 있다. 읽기 어려운 hand-escaped strings를 피하기 위해서 원시 문자 리터럴을 사용해라.
Bad | Good |
@@ -1847,10 +1814,9 @@ wantError := `unknown error:"test"`
-### Initializing Struct References
+### 구조체 참조 초기화 (Initializing Struct References)
-Use `&T{}` instead of `new(T)` when initializing struct references so that it
-is consistent with the struct initialization.
+구조체 참조(struct reference)를 초기화 할 때, `new(T)`대신에 `&T{}`을 사용하여 구조체 초기화와 일관성을 가지도록 해라.
Bad | Good |
@@ -1876,12 +1842,11 @@ sptr := &T{Name: "bar"}
-### Format Strings outside Printf
+### Printf외부의 문자열 형식 (Format Strings outside Printf)
-If you declare format strings for `Printf`-style functions outside a string
-literal, make them `const` values.
+문자열 리터럴 외부의 `Printf`-스타일의 함수에 대한 형식 문자열(format strings)을 선언하는 경우 `const`값 (const value)로 만들라.
-This helps `go vet` perform static analysis of the format string.
+이는 `go vet`이 형식 문자열의 정적 분석(static analysis) 수행하는데 도움이 된다.
Bad | Good |
@@ -1903,35 +1868,29 @@ fmt.Printf(msg, 1, 2)
-### Naming Printf-style Functions
+### Printf-스타일 함수의 이름 (Naming Printf-style Functions)
-When you declare a `Printf`-style function, make sure that `go vet` can detect
-it and check the format string.
+`Printf`-스타일의 함수를 선언할 때, `go vet`이 이를 감지하고 형식 문자열 (format string)을 체크 할 수 있는지 확인해라.
-This means that you should use pre-defined `Printf`-style function
-names if possible. `go vet` will check these by default. See [Printf family]
-for more information.
+이것은 미리 정의 된 `Printf`-스타일 함수를 사용해야 한다는 것을 의미한다. `go vet`이 이를 디폴트로 체크한다. 자세한 정보는 다음을 참조하기 바란다: [Printf family]
[Printf family]: https://golang.org/cmd/vet/#hdr-Printf_family
-If using the pre-defined names is not an option, end the name you choose with
-f: `Wrapf`, not `Wrap`. `go vet` can be asked to check specific `Printf`-style
-names but they must end with f.
+미리 정의된 이름(pre-defined names)을 사용하는 것이 옵션이 아니라면, 선택한 이름을 f로 끝내도록 해라: `Wrap`이 아닌 `Wrapf`. `go vet`은 특정 `Printf`-스타일의 이름을 확인하도록 요청받을 수 있으나 이들의 이름은 모두 `f`로 끝나야만 한다.
```shell
$ go vet -printfuncs=wrapf,statusf
```
-See also [go vet: Printf family check].
+또한 다음을 참고해라: [go vet: Printf family check].
[go vet: Printf family check]: https://kuzminva.wordpress.com/2017/11/07/go-vet-printf-family-check/
-## Patterns
+## 패턴 (Patterns)
-### Test Tables
+### 테스트 테이블 (Test Tables)
-Use table-driven tests with [subtests] to avoid duplicating code when the core
-test logic is repetitive.
+핵심적 테스트 로직(the core test logic)이 반복적일 때, 코드 중복을 피하려면 [subtests]와 함께 table-driven tests를 사용해라.
[subtests]: https://blog.golang.org/subtests
@@ -2009,12 +1968,9 @@ for _, tt := range tests {
-Test tables make it easier to add context to error messages, reduce duplicate
-logic, and add new test cases.
+테스트 테이블을 사용하면 에러 메시지에 컨텍스트를 쉽게 추가하고, 중복된 로직을 줄일 수 있으며, 쉽게 새로운 테스트 케이스를 추가할 수 있다.
-We follow the convention that the slice of structs is referred to as `tests`
-and each test case `tt`. Further, we encourage explicating the input and output
-values for each test case with `give` and `want` prefixes.
+우리는 구조체 슬라이스를 `tests`라고 하고, 각 테스트 케이스를 `tt`라고 한다. 또한 각 테스트 케이스의 입력 및 출력 값을 `give` 및 `want` 접두어를 사용하여 설명(explicating)하는 것을 권장한다.
```go
tests := []struct{