2023-03-03
- Receivers and Interfaces: Clarify subtlety with pointer receivers and values.
2022-10-18
- Add guidance on managing goroutine lifecycles.
2022-03-30
- Add guidance on using field tags in marshaled structs.
2021-11-16
- Add guidance on use of
%w vs %v with fmt.Errorf, and where to use
errors.New or custom error types.
2021-11-12
- Add soft line length limit of 99 characters.
2021-04-19
- Programs should exit only in
main(), preferably at most once.
2021-03-15
- Add guidance on omitting zero-value fields during struct initialization.
- Add guidance on
Foo{} versus var form for initialization of empty
structs.
- Add new section for Initializing Structs, moving relevant guidances into
subsections of it.
2020-06-10
- Add guidance on avoiding
init().
- Add guidance to avoid using built-in names.
- Add reminder that nil slices are not always the same as empty slices.
2020-02-24
- Add guidance on verifying interface compliance with compile-time checks.
2020-01-30
- Recommend using the
time package when dealing with time.
2020-01-25
- Add guidance against embedding types in public structs.
2019-12-17
- Functional Options: Recommend struct implementations of
Option interface
instead of capturing values with a closure.
2019-11-26
- Add guidance against mutating global variables.
2019-10-21
- Add section on remaining consistent with existing practices.
- Add guidance on map initialization and size hints.
2019-10-11
- Suggest succinct context for error messages.
2019-10-10