¿Cómo clonar una estructura con campo no exportado?

Si tengo un tipo definido como:

type T struct {
    S  string
    is []int
}

entonces, ¿cómo puedo clonar un objeto de este tipo? Si hago una tarea simple:

p := T{"some string", []int{10, 20}}
q := p

Luego, cualquier cambio realizado en el[]int afectar a ambos objetos. Ya queT.is no se exporta, no se puede copiar explícitamente, incluso si se extrae utilizando reflect.

Actualmente estoy suministrando unClone método en el paquete del tipo en sí. Pero eso no ayuda con tipos similares en otros paquetes. Hay otra manera de hacer esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta