Go: преобразовать отражение. Значение типа uuid.UUID (satori) снова в uuid.UUID - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь преобразовать отраженный UUID обратно в фактический объект UUID снова, но не могу найти способ, когда я печатаю отраженное значение, оно выглядит правильно, но при попытке преобразовать я не могу найти способ.

package main

import (
  "fmt"
  "reflect"

  uuid "github.com/satori/go.uuid"
)

func main() {
  value := uuid.Must(uuid.NewV4())
  reflectedValue := reflect.ValueOf(value)
  fmt.Println(reflectedValue)
  result := reflectedValue.String()
  fmt.Println(result)
}

вывод:

$ go run main.go
0cca93f8-1763-4816-a2a0-09e7aeeb674c
<uuid.UUID Value>

Как напрямую преобразовать отраженное значение в uuid.UUID или [] байт / строку, чтобы я мог сделать из этого объект uuid.UUID.Поскольку fmt.Println удается вывести правильное значение, должно быть возможно выполнить преобразование, но я не могу понять, как.

Кажется, что объект uuid.UUID имеет структуру данных 16 uint8значения.

1 Ответ

0 голосов
/ 13 июня 2018

Используйте утверждение типа для базового значения :

u, ok := reflectedValue.Interface().(uuid.UUID)
...