go styleguide: require Stringer for custom string wrapper types #3
@ -429,6 +429,29 @@ last_modified: 2026-02-22
|
||||
releasable". "Releasable" in this context means that it builds and functions
|
||||
as expected, and that all tests and linting passes.
|
||||
|
||||
1. Custom string types (e.g. `type ImageID string`) should implement the
|
||||
`fmt.Stringer` interface by adding a `String() string` method. When passing
|
||||
these types to library code or standard library functions that expect a
|
||||
`string`, use the `.String()` method instead of a `string()` cast. This
|
||||
keeps the code consistent with Go's interface conventions and makes it
|
||||
easier to change the underlying representation later without updating every
|
||||
call site.
|
||||
|
||||
Example:
|
||||
|
||||
```go
|
||||
type ImageID string
|
||||
|
||||
// String implements fmt.Stringer.
|
||||
func (id ImageID) String() string { return string(id) }
|
||||
|
||||
// Right:
|
||||
client.RemoveImage(ctx, imageID.String())
|
||||
|
||||
// Wrong:
|
||||
client.RemoveImage(ctx, string(imageID))
|
||||
```
|
||||
|
||||
# Other Golang Tips and Best Practices (Optional)
|
||||
|
||||
1. For any internet-facing http server, set appropriate timeouts and limits to
|
||||
|
||||
Loading…
Reference in New Issue
Block a user