Como imprimir a fatia de ponteiros para obter os valores em vez de seus endereços sem iteração em moviment
Esta saída é necessária para fins de depuração. Para obter o valor real da fatia de ponteiros, toda vez que uma iteração é necessári
Existe alguma maneira, podemos ter diretamente o valor em vez do endereço de cada item presente na fatia usando o simples fmt.printf ()?
Aqui está um trecho de código:https: //play.golang.org/p/bQ5vWTlKZm
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)
}
}
No código acima, se estou imprimindo a fatia diretamente por fmt.printf, recebo apenas o endereço dos valores em vez do próprio valor rea
output:users at slice [0x442260 0x442280]
Para ler sempre os valores, tenho que chamarfunc
gostarprintEachUser
para iterar a fatia e obter o valor apropriad
output:user at user[0] is : {1 cooluser1 [email protected]}
user at user[1] is : {2 cooluser2 [email protected]}
Existe alguma maneira, podemos ler os valores dentro da fatia de ponteiros usandofmt.printf
e obter valor diretamente como abaixo?
users at slice [&{1 cooluser1 [email protected]} , &{2 cooluser2 [email protected]}]