diff --git a/README.md b/README.md index c41016c..84ace39 100644 --- a/README.md +++ b/README.md @@ -52,108 +52,108 @@ Go tips from [Phuong Le](https://twitter.com/func25). ## 翻译任务认领表格 -| tip序号 | 标题 | 译者 | +| tip序号 | 标题 | 译者 | | --- | --- |-----------| | 1 | Measure the execution time of a function in just one line of code. | smallnest | | 2 | Multistage defer | smallnest | | 3 | Pre-allocate slices for performance | smallnest | -| 4 | Parse an Array into a Slice | smallnest | -| 5 | Method Chaining | smallnest | -| 6 | Underscore Import | icyfire | -| 7 | 作者已删除| | -| 8 | Wrapping Errors | icyfire | -| 9 | Compile-Time Interface Verification | icyfire | -| 10 | Avoid Naked Parameters | smallnest | -| 11 | Numeric separators | icyfire | -| 12 | Avoid using math/rand, use crypto/rand for keys instead | icyfire | -| 13 | Empty slice or, even better, NIL SLICE | icyfire | -| 14 | | | -| 15 | | | -| 16 | | | -| 17 | | | -| 18 | | | -| 19 | | | -| 20 | Pass values, not pointers | smallnest | -| 21 | | | -| 22 | | | -| 23 | | | -| 24 | | | -| 25 | | | -| 26 | | | -| 27 | Filter without any allocation | devin7788 | -| 28 | | | -| 29 | | | -| 30 | 使用context.WithoutCancel()继续上下文操作 | smallnest | -| 31 | | | -| 32 | | | -| 33 | | | -| 34 | | | -| 35 | | | -| 36 | | | -| 37 | | | -| 38 | Make your errors clear with fmt.Errorf, don't just leave them bare | smallnest | -| 39 | | | -| 40 | Handle errors while using defer to prevent silent failures | smallnest | -| 41 | | | -| 42 | | | -| 43 | | | -| 44 | Intentionally Stop with Must Functions | syjs10 | -| 45 | | | -| 46 | | | -| 47 | Table-driven tests, subtests, and parallel tests | devin7788 | -| 48 | | | -| 49 | | | -| 50 | Make Structs Non-comparable. | smallnest | -| 51 | | | -| 52 | | | -| 53 | | | -| 54 | | | -| 55 | | | -| 56 | Simplify interfaces and only ask for what you really need | cannian1 | -| 57 | | | -| 58 | | | -| 59 | | | -| 60 | sync.Once is the best way to do things once | smallnest | -| 61 | | | -| 62 | | | -| 63 | Avoid time.Sleep(), it's not context-aware and can't be interrupted | richzw | -| 64 | | | -| 65 | Returning Pointers Made Easy with Generics | miniLCT | -| 66 | Simplify Your Error Messages in fmt.Errorf | smallnest | -| 67 | How to deal with long function signatures | richzw | -| 68 | Use the deadcode tool to find and remove unused functions | richzw | -| 69 | Manage multiple goroutines with errgroup | richzw | -| 70 | Implement a context-aware sleep function | hxzhouh | +| 4 | Parse an Array into a Slice | smallnest | +| 5 | Method Chaining | smallnest | +| 6 | Underscore Import | icyfire | +| 7 | 作者已删除| | +| 8 | Wrapping Errors | icyfire | +| 9 | Compile-Time Interface Verification | icyfire | +| 10 | Avoid Naked Parameters | smallnest | +| 11 | Numeric separators | icyfire | +| 12 | Avoid using math/rand, use crypto/rand for keys instead | icyfire | +| 13 | Empty slice or, even better, NIL SLICE | icyfire | +| 14 | | | +| 15 | | | +| 16 | | | +| 17 | | | +| 18 | | | +| 19 | | | +| 20 | Pass values, not pointers | smallnest | +| 21 | | | +| 22 | | | +| 23 | | | +| 24 | | | +| 25 | | | +| 26 | | | +| 27 | Filter without any allocation | devin7788 | +| 28 | | | +| 29 | | | +| 30 | 使用context.WithoutCancel()继续上下文操作 | smallnest | +| 31 | | | +| 32 | | | +| 33 | | | +| 34 | | | +| 35 | | | +| 36 | | | +| 37 | | | +| 38 | Make your errors clear with fmt.Errorf, don't just leave them bare | smallnest | +| 39 | | | +| 40 | Handle errors while using defer to prevent silent failures | smallnest | +| 41 | | | +| 42 | | | +| 43 | | | +| 44 | Intentionally Stop with Must Functions | syjs10 | +| 45 | | | +| 46 | | | +| 47 | Table-driven tests, subtests, and parallel tests | devin7788 | +| 48 | | | +| 49 | | | +| 50 | Make Structs Non-comparable. | smallnest | +| 51 | | | +| 52 | | | +| 53 | | | +| 54 | | | +| 55 | | | +| 56 | Simplify interfaces and only ask for what you really need | cannian1 | +| 57 | | | +| 58 | | | +| 59 | | | +| 60 | sync.Once is the best way to do things once | smallnest | +| 61 | | | +| 62 | | | +| 63 | Avoid time.Sleep(), it's not context-aware and can't be interrupted | richzw | +| 64 | | | +| 65 | Returning Pointers Made Easy with Generics | miniLCT | +| 66 | Simplify Your Error Messages in fmt.Errorf | smallnest | +| 67 | How to deal with long function signatures | richzw | +| 68 | Use the deadcode tool to find and remove unused functions | richzw | +| 69 | Manage multiple goroutines with errgroup | richzw | +| 70 | Implement a context-aware sleep function | hxzhouh | | 71 | sync.Pool, make it typed-safe with generics | QingyaFan | -| 72 | Case-Insensitive string comparison with strings.EqualFold | syjs10 | -| 73 | Implement String() for enum with the stringer tool | syjs10 | -| 74 | Make time.Duration clear and easy to understand | richzw | -| 75 | Optimize multiple calls with singleflight | hxzhouh | -| 76 | Result forwarding in function calls | syjs10 | -| 77 | Buffered channels as semaphores to limit goroutine execution | QingyaFan | +| 72 | Case-Insensitive string comparison with strings.EqualFold | syjs10 | +| 73 | Implement String() for enum with the stringer tool | syjs10 | +| 74 | Make time.Duration clear and easy to understand | richzw | +| 75 | Optimize multiple calls with singleflight | hxzhouh | +| 76 | Result forwarding in function calls | syjs10 | +| 77 | Buffered channels as semaphores to limit goroutine execution | QingyaFan | | 78 | Non-blocking channel send trick | hxzhouh | -| 79 | | | -| 80 | | | -| 81 | | | -| 82 | | | -| 83 | | | -| 84 | | | -| 85 | | | -| 86 | | | -| 87 | | | -| 88 | | | -| 89 | | | -| 90 | | | -| 91 | | | -| 92 | | | -| 93 | | | -| 94 | | | -| 95 | | | -| 96 | | | -| 97 | | | -| 98 | | | -| 99 | | | -| 100 | | | +| 79 | | | +| 80 | | | +| 81 | | | +| 82 | | | +| 83 | | | +| 84 | | | +| 85 | | | +| 86 | | | +| 87 | | | +| 88 | | | +| 89 | | | +| 90 | | | +| 91 | | | +| 92 | | | +| 93 | | | +| 94 | | | +| 95 | | | +| 96 | | | +| 97 | | | +| 98 | | | +| 99 | | | +| 100 | | | ## 生成文档