Vamos supor que eu tenha um código como este:
type CustomStringType string
var a *CustomStringType
x := CustomStringType("sample string")
a = &x
var b *string
e não consigo modificar nada no código acima.
Agora eu gostaria de atribuir a
ab
Eu tentei de várias maneiras, como:
b = a
b = string(a)
b = a.(string)
b = a.(*string)
mas nenhum deles realmente funciona.
Use uma conversão de tipo simples :
Como o tipo para o qual você deseja converter começa com um
*
operador, ele deve ser colocado entre parênteses para evitar ambiguidade (por exemplo, você deseja converter para*string
, e não parastring
e desreferenciar o resultado).(*string)(a)
é uma conversão válida, pois você deseja converter um valor de type*CustomStringType
para*string
, e a especificação permite tal conversão com a seguinte regra:Ambos
*CustomStringType
e*string
são tipos de ponteiro sem nome e ambos têmstring
como tipos base de ponteiro.Você pode usar a conversão de documentos go.dev:
Mas vamos dar uma olhada nesta nota
Então a solução pode ser: