Да такой вариант есть
https://play.golang.org/p/whZsiOVhYwWТогда вопрос другого плана. Для сериализации через JSON анотации, необходимо открыть доступ к полям структуры. Тоесть никто не запрещает выставить оба значения для
oneof руками. И если с сеттерами и мапой я удалял предыдущий ключ оставляя лишь последнее значение, то как быть в таком случае? Удалять какое-то из значений неявно на момент сериализации? Я согласен что такая реализация более изящно выглядит и скорей всего меньше ресурсов жрёт, но использовать ее менее удобно. Даже то что значения нужно передавать по ссылке (это если бы можно было передать в функцию
&"text", не так бы напрягало, а так создавай переменную)