method is a printf wrapper, this // establishes that Logger.Logf is a printf wrapper too, causing // dynamic calls through the interface to be checked: // // func f(log Logger) { // log.Logf("%s", 123) // Logger.Logf format %s has arg 123 of wrong type int // } // // This feature applies only to interface methods declared in files // using at least Go 1.26. // // # Specifying printf wrappers by flag // // The -funcs flag specifies a comma-separated list of names of // additional known formatting functions or methods. (This legacy flag // is rarely used due to the automatic inference described above.) // // If the name contains a period, it must denote a specific function // using one of the following forms: // // dir/pkg.Function // dir/pkg.Type.Method // (*dir/pkg.Type).Method // // Otherwise the name is interpreted as a case-insensitive unqualified // identifier such as "errorf". Either way, if a listed name ends in f, the // function is assumed to be Printf-like, taking a format string before the // argument list. Otherwise it is assumed to be Print-like, taking a list // of arguments with no format string. package printf