How to print the slice of pointers to get the values instead of their address without iteration at go?

This kind output required for debugging purpose. To get actual value of slice of pointers, every time a iteration is getting required.

This kind output required for debugging purpose. To get actual value of slice of pointers, every time a iteration is getting required.

Is there any way, we can directly have the value instead of the address of each item present at slice using simple fmt.printf()?

Here is a code snippet : https://play.golang.org/p/bQ5vWTlKZmV

package main

import (
"fmt"
)

type user struct {
userID int
name string
email string
}

func main() {
var users []*user
addUsers(users)
}

func addUsers(users []*user) {
users = append(users, &user{userID: 1, name: "cooluser1", email: "[email protected]"})
users = append(users, &user{userID: 2, name: "cooluser2", email: "[email protected]"})
printUsers(users)
printEachUser(users)

}

func printUsers(users []*user) {
fmt.Printf("users at slice %v \n", users)
}

func printEachUser(users []*user) {
for index, u := range users {
fmt.Printf("user at user[%d] is : %v \n", index, *u)
}
}

At above code, if I am printing the slice directly by fmt.printf , I get only the address of the values instead of actual value itself.

output : users at slice [0x442260 0x442280]

To read to the values always, i have to call func like printEachUser to iterate the slice and get the appropriate value .

output: user at user[0] is : {1 cooluser1 [email protected]} user at user[1] is : {2 cooluser2 [email protected]}

Is there any way, we can read the values inside the slice of pointers using fmt.printf and get value directly like below ?

users at slice [&{1 cooluser1 [email protected]} , &{2 cooluser2 [email protected]}]

Go Programming Tutorial - Real World Advice for Building Go Projects - Practical Go

Go is a language designed for engineering teams. Its central themes are simplicity, readability, and maintainability. This workshop will provide best practice real world advice for teams building projects in Go covering five areas: - Idiomatic code - Package and API design - Error handling - Concurrency - Testing

Thanks for reading

If you liked this post, share it with all of your programming buddies!

Follow us on Facebook | Twitter

Further reading about Go Programming

Learn How To Code: Google's Go (golang) Programming Language

Moving from NodeJS to Go

Building a chat widget with Go and JavaScript

Building Modern Desktop Apps in Go

Why Go Is Perfect For DevOps

Go for DevOps, Go for Microservices, and what Go is Actually Good For