Golang fmt.Sprintln function
last modified May 8, 2025
This tutorial explains how to use the fmt.Sprintln function in Go.
We'll cover string formatting basics with practical examples of formatted output.
The fmt.Sprintln function formats its arguments into a string, adding spaces between operands and appending a newline. It returns the resulting string. This is useful for creating formatted strings without direct output.
In Go, fmt.Sprintln is part of the fmt package's string formatting
functions. It's similar to fmt.Println but returns a string instead
of writing to standard output.
Basic fmt.Sprintln example
The simplest use of fmt.Sprintln formats basic values into a string.
This example demonstrates basic string formatting with different value types.
package main
import (
"fmt"
)
func main() {
name := "Alice"
age := 30
height := 5.8
result := fmt.Sprintln("Name:", name, "Age:", age, "Height:", height)
fmt.Print("Formatted string: ", result)
}
The function combines strings, integers, and floats into a single formatted string. Spaces are automatically added between operands and a newline at the end.
Formatting multiple values
fmt.Sprintln can format multiple values of different types. This
example shows how it handles various data types in a single call.
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
active := true
score := 95.5
info := fmt.Sprintln("Current time:", now, "Active:", active, "Score:", score)
fmt.Print("System info:\n", info)
}
The function formats a time value, boolean, and float along with strings. The output maintains proper spacing and includes a trailing newline.
Using with structs
fmt.Sprintln can format struct values. This example demonstrates
struct formatting with default string representation.
package main
import (
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Bob", Age: 42}
output := fmt.Sprintln("Person details:", p)
fmt.Print(output)
}
The struct is formatted using its default string representation. The output includes the struct field values with proper spacing and newline.
Combining with string concatenation
fmt.Sprintln results can be combined with other strings. This
example shows string concatenation with formatted output.
package main
import (
"fmt"
)
func main() {
item := "book"
price := 29.99
quantity := 3
header := "ORDER DETAILS\n"
details := fmt.Sprintln("Item:", item, "Price:", price, "Quantity:", quantity)
total := fmt.Sprintf("Total: $%.2f\n", price*float64(quantity))
fullOutput := header + details + total
fmt.Print(fullOutput)
}
The formatted string from fmt.Sprintln is combined with other
strings to create a complete output. This demonstrates flexible string building.
Formatting slices and arrays
fmt.Sprintln can format slice and array values. This example shows
collection formatting with default representation.
package main
import (
"fmt"
)
func main() {
numbers := []int{1, 2, 3, 4, 5}
colors := [3]string{"red", "green", "blue"}
list := fmt.Sprintln("Numbers:", numbers, "Colors:", colors)
fmt.Print("Collections:\n", list)
}
Both slice and array values are formatted with their elements shown in square brackets. The output maintains consistent spacing and includes a newline.
Custom type formatting
Types implementing the Stringer interface can customize their formatting. This
example demonstrates custom string representation with fmt.Sprintln.
package main
import (
"fmt"
)
type Temperature float64
func (t Temperature) String() string {
return fmt.Sprintf("%.1f°C", t)
}
func main() {
temp := Temperature(23.5)
output := fmt.Sprintln("Current temperature:", temp)
fmt.Print(output)
}
The Temperature type implements the Stringer interface to provide custom
formatting. fmt.Sprintln uses this custom representation.
Error handling with fmt.Sprintln
fmt.Sprintln can help format error messages. This example shows
error message formatting with contextual information.
package main
import (
"fmt"
"os"
)
func checkFile(filename string) error {
_, err := os.Stat(filename)
if err != nil {
return fmt.Errorf("file error: %v", err)
}
return nil
}
func main() {
err := checkFile("missing.txt")
if err != nil {
msg := fmt.Sprintln("Operation failed:", err)
fmt.Print(msg)
}
}
The error message is formatted with additional context using fmt.Sprintln.
This creates a complete error message with proper spacing and newline.
Source
This tutorial covered the fmt.Sprintln function in Go with practical
examples of string formatting and output generation.
Author
List all Golang tutorials.