Sprintf Format Verb Mismatch

fmt.Sprintf format %d has arg of wrong type string (printf)

Quick Answer

The format verb does not match the argument type. Use %s for strings, %d for integers, %f for floats, and %v for any type.

Why This Happens

Go's vet tool checks that format verbs in printf-style functions match the types of the corresponding arguments. Using %d with a string or %s with an int is a bug. Use %v as a safe default that works with any type.

The Problem

func main() {
    name := "Alice"
    age := 30
    fmt.Sprintf("Name: %d, Age: %s", name, age) // verbs swapped
}

The Fix

func main() {
    name := "Alice"
    age := 30
    fmt.Sprintf("Name: %s, Age: %d", name, age)
}

Step-by-Step Fix

  1. 1

    Identify the mismatch

    Read the vet error to see which format verb does not match which argument.

  2. 2

    Fix the verb

    Change the format verb to match the argument type: %s for string, %d for int, %f for float, %v for any.

  3. 3

    Run go vet

    Run go vet ./... to catch other printf-style format mismatches.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free