```go package main import "fmt" type T int func (T) String() string { return "T" } type S struct { t T } func main() { var t T fmt.Printf("%s\n", t) var s S fmt.Printf("%s\n", s) } ``` ```bash $ go tool vet x.go $ go run x.go T {%!s(main.T=0)} ``` vet should know that S isn't a fmt.Stringer. The printfunc's "satisfies interface" check needs improvements. Related is #17057. cc @robpike @valyala