# How To Print Struct Fields in Go

**URL:** https://sentry.io/answers/how-to-print-struct-fields-in-go/

---

## The Problem

You don't know how to see the values that a struct contains.

## The Solution

Because struct fields in Go are just values, printing them out can be as simple as printing any variable:

```go
package main

import "fmt"

type Example struct {
	ID    int
	Title string
}

func main() {
	example := Example{
		ID:    42,
		Title: "Example title",
	}

	fmt.Printf("example struct: ID: %d, Title: %s", example.ID, example.Title)
```

This prints:

```
example struct: ID: 42, Title: Example title
```

### Printing the Entire Struct

If you want to print the entire struct and include its field names automatically, you can use a special [verb](https://pkg.go.dev/fmt#hdr-Printing) to do so:

```go
package main

import (
	"encoding/json"
	"fmt"
	"log"
)

type Example struct {
	ID    int
	Title string
	List  []int
}

func main() {
	example := Example{
		ID:    42,
		Title: "Example title",
		List:  []int{1, 2, 3},
	}

	fmt.Printf("%+v", example)
}
```

This prints:

```
{ID:42 Title:Example title List:[1 2 3]}
```

Alternatively, if you want to print something easier to see over multiple lines, you can use the [`json.MarshallIndent`](https://pkg.go.dev/encoding/json#MarshalIndent) function to print it as indented JSON:

```go
func main() {
	example := Example{
		ID:    42,
		Title: "Example title",
		List:  []int{1, 2, 3},
	}

	bytes, err := json.MarshalIndent(example, "", "\t")
	if err != nil {
		log.Fatal("failed to marshal example", err)
	}

	fmt.Println(string(bytes))
}
```

This prints:

```go
{
  "ID": 42,
  "Title": "Example title",
  "List": [
    1,
    2,
    3
  ]
}
```

### Further Reading

- The [Go maps in action](https://go.dev/blog/maps) blog post
- [The zero value](https://go.dev/ref/spec#The_zero_value) in the Go Spec
- [The empty struct](https://dave.cheney.net/2014/03/25/the-empty-struct) by Dave Cheney

---

*Source: [sentry.io/answers/how-to-print-struct-fields-in-go/](https://sentry.io/answers/how-to-print-struct-fields-in-go/)*
