Como clonar uma estrutura com campo não exportado?

Se eu tiver um tipo definido como:

type T struct {
    S  string
    is []int
}

então como posso clonar um objeto desse tipo? Se eu fizer uma tarefa simples:

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

Em seguida, quaisquer alterações feitas no[]int afeta os dois objetos. Desde aT.is não é exportado, não pode ser copiado explicitamente, mesmo se extraído usando reflect.

Atualmente, estou fornecendo umClone método no pacote do próprio tipo. Mas isso não ajuda com tipos semelhantes em outros pacotes. Há outra maneira de fazer isso?

questionAnswers(1)

yourAnswerToTheQuestion