Выход:

вид вывода необходим для отладки. Чтобы получить реальное значение среза указателей, каждый раз, когда требуется итерация.

Есть ли способ, мы можем напрямую иметь значение вместо адреса каждого элемента, присутствующего на слайсе, используя простой fmt.printf ()?

Вот фрагмент кода: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)
    }
}

В приведенном выше коде, если я печатаю срез непосредственно с помощью fmt.printf, я получаю только адрес значений вместо самого фактического значения.

выход :users at slice [0x442260 0x442280]

Чтобы прочитать значения всегда, я должен позвонитьfunc любитьprintEachUser итерировать срез и получить соответствующее значение.

выход:user at user[0] is : {1 cooluser1 [email protected]} user at user[1] is : {2 cooluser2 [email protected]}

Есть ли способ, мы можем прочитать значения внутри слайса указателей, используяfmt.printf и получить значение напрямую, как показано ниже?

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

Ответы на вопрос(3)

Ваш ответ на вопрос