Flatpack (and in particular the methods flatpack.flatten and .unflatten) correctly handle cyclic data and shared substructure involving pointers, but from reading the source for reflect.DeepEqual it's clear that it's possible to encounter cycles that do not involve pointers.
In particular, slices and maps are both reference types which can share substructure and result in circular references (in conjunction with interface types, which, while they may internally be implemented with a pointer, cannot by themselves result in shared substructure or cycles).
(Moved from CodeCity)