Golang fmt.Sprint function
last modified May 8, 2025
This tutorial explains how to use the fmt.Sprint function in Go.
We'll cover string formatting basics with practical examples of converting
values to strings without printing.
The fmt.Sprint function formats values and returns the resulting
string. Unlike fmt.Print, it doesn't output to standard output.
This is useful when you need the formatted string for further processing.
In Go, fmt.Sprint accepts any number of arguments of any type.
It converts them to strings using default formatting and concatenates them.
The function handles all basic types automatically.
Basic fmt.Sprint example
The simplest use of fmt.Sprint converts values to strings.
This example demonstrates basic string concatenation with different types.
package main
import (
"fmt"
)
func main() {
name := "Alice"
age := 30
height := 5.8
result := fmt.Sprint(name, " is ", age, " years old and ", height, " feet tall")
fmt.Println(result)
}
The function converts all values to strings and concatenates them.
The resulting string is stored in the result variable.
Formatting numbers with fmt.Sprint
fmt.Sprint handles numeric types automatically. This example
shows how it converts different numeric types to strings.
package main
import (
"fmt"
)
func main() {
intVal := 42
floatVal := 3.14159
complexVal := complex(2, 3)
result := fmt.Sprint("Integer: ", intVal, "\n",
"Float: ", floatVal, "\n",
"Complex: ", complexVal)
fmt.Println(result)
}
Each numeric type is converted to its string representation. The newline characters format the output across multiple lines.
Combining structs with fmt.Sprint
fmt.Sprint can format struct values. This example demonstrates
how it handles custom struct types.
package main
import (
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Bob", Age: 25}
result := fmt.Sprint("Person details: ", p)
fmt.Println(result)
}
The struct is converted using its default string representation. The output includes both field names and values.
Using fmt.Sprint with slices
Slices are automatically formatted when passed to fmt.Sprint.
This example shows slice formatting behavior.
package main
import (
"fmt"
)
func main() {
numbers := []int{1, 2, 3, 4, 5}
result := fmt.Sprint("Numbers: ", numbers)
fmt.Println(result)
words := []string{"apple", "banana", "cherry"}
result = fmt.Sprint("Fruits: ", words)
fmt.Println(result)
}
The slice contents are formatted with square brackets and space separators. Both integer and string slices are handled the same way.
Custom Stringer interface with fmt.Sprint
Types implementing the Stringer interface can customize their
output. This example demonstrates custom string formatting.
package main
import (
"fmt"
)
type Point struct {
X, Y int
}
func (p Point) String() string {
return fmt.Sprintf("(%d,%d)", p.X, p.Y)
}
func main() {
p := Point{X: 10, Y: 20}
result := fmt.Sprint("Current position: ", p)
fmt.Println(result)
}
The Point type implements the Stringer interface.
fmt.Sprint uses this custom formatting when converting the value.
Error handling with fmt.Sprint
fmt.Sprint is often used to create error messages. This example
shows how to build descriptive error strings.
package main
import (
"fmt"
"os"
)
func checkFile(filename string) error {
if _, err := os.Stat(filename); err != nil {
return fmt.Errorf("file error: %v - %s", err, filename)
}
return nil
}
func main() {
err := checkFile("missing.txt")
if err != nil {
fmt.Println(fmt.Sprint("Error occurred: ", err))
}
}
The example combines error values with descriptive text.
fmt.Sprint helps build comprehensive error messages.
Performance considerations
For simple string conversions, fmt.Sprint might be less efficient
than direct conversion. This example compares different approaches.
package main
import (
"fmt"
"strconv"
)
func main() {
count := 42
// Using fmt.Sprint
result1 := fmt.Sprint("Count: ", count)
// Using strconv
result2 := "Count: " + strconv.Itoa(count)
fmt.Println(result1)
fmt.Println(result2)
}
For simple cases, strconv might be faster. However,
fmt.Sprint provides more flexibility with mixed types.
Source
This tutorial covered the fmt.Sprint function in Go with practical
examples of string formatting and conversion.
Author
List all Golang tutorials.