Стек проще всего сделать на односвязном списке, как в упомянутом
https://pkg.go.dev/github.com/golang-collections/c... Но можно сделать стек и на массиве, мне тоже было интересно и я поднимал вопрос на stackoverflow
https://stackoverflow.com/questions/28541609/looki... На массиве меньше аллокаций. Относительно типа элементов - на мой взгляд реализации с пустыми интерфейсами носят методический и демонстрационный характер. На производстве применяют решения с конкретными типами. Надобность в стеке элементов разного типа наводит на мысли о сырой архитектуре. Пробуйте конкретизировать тип. По крайней мере пусть будет интерфейс необходимых методов. Вы же собираетесь как то единообразно использовать элементы этого стека, значит им нужны будут методы использования. Но не пустой интерфейс, как по мне.