Я даже не знаю как вопрос правильно сформулировать, но кодом. Есть 3 пакета: p1,p2,p3
В p3 находится структура к примеру test, которую вызывают пакеты p1,p2
И первые 2 пакета импортируются в main.
import {
"p1"
"p2"
}
result1 = p1.somefunc(val)
result2 = p2.anotherfunc(<b>result1</b>)
Грубо говоря из первого пакета вызывается функция, которая что-то делает и её результат передается функции из второго пакета. Результатом является структура из 3 пакета.
В самих p1,p2 структура подтягивается import
P1
import "p3"
type SM p3.SM
func somefunc(val) (SM) { ... }
P2
import "p3"
type SM p3.SM
func anotherfunc(SM) (somereturn) { ... }
Проблема в том что при вызове таком он мне сразу ругается:
cannot use result1 (p1.SM) as type p2.SM in argument to p2.anotherfunc
Я понимаю в чем ошибка, я в пакете p1,p2 создал разные экземпляры p3.SM структуры. Я пытаюсь понять как это обойти без всяких копирований reflect и прочего. Мне кажется есть решение супер простое, может быть какие-то интерфейсы которые я вообще не понимаю или где-то какой-то ссылкой пойти. Не хочется в двух пакетах убирать объявление type SM p3.SM и во всех функциях делать прямую ссылку на P3 пакет. Я проверил так работает, но гибкость пропадает.