go styleguide: require Stringer for custom string wrapper types #3

Closed
clawbot wants to merge 1 commits from clawbot/prompts:add-stringer-rule into main

View File

@ -429,6 +429,29 @@ last_modified: 2026-02-22
releasable". "Releasable" in this context means that it builds and functions releasable". "Releasable" in this context means that it builds and functions
as expected, and that all tests and linting passes. 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) # Other Golang Tips and Best Practices (Optional)
1. For any internet-facing http server, set appropriate timeouts and limits to 1. For any internet-facing http server, set appropriate timeouts and limits to