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

This page is not yet available in Spanish. We are working on its translation.
If you have any questions or feedback about our current translation project, feel free to reach out to us!

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