Replace w.Write([]byte(fmt.Sprintf())) with fmt.Fprintf()

Metadata

ID: go-best-practices/use-fprintf-when-possible

Language: Go

Severity: Warning

Category: Best Practices

Description

You do not need to convert the string into a slice of bytes to use Write, you can just use the string directly.

Non-Compliant Code Examples

package main

import (
	"fmt"
	"os"
)

func main(w, a x) {
	r, w := io.Pipe()

	go func() {
		idx, name := "4th", "Mars"

		w.Write([]byte(fmt.Sprintf("The %s planet is %s.\n", idx, name)))
		w.Write([]byte(fmt.Sprint("The ", idx, " planet is ", name, ".\n")))
		w.Write([]byte(fmt.Sprintln("The", idx, "planet is", name, ".")))
		w.Close()
	}()

	if _, err := io.Copy(os.Stdout, r); err != nil {
		log.Fatal(err)
	}
}

Compliant Code Examples

package main

import (
	"fmt"
	"os"
)

func main() {
	const idx, name = "4th", "Mars"
	n, err := fmt.Fprint(os.Stdout, "The ", idx, " planet is ", name,".\n")
    
	if err != nil {
		fmt.Fprintf(os.Stderr, "Fprint: %v\n", err)
	}
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis