В документах не упоминается, что CollectionRef поддерживается в документе. Так что я не уверен, что это сработает. Вы можете увидеть, что я имею в виду здесь .
С другой стороны, я не думаю, что вы действительно что-то получите от этого, поскольку вы можете получить доступ к коллекции, выполнив следующие действия.
client.Collection("chatroom/" + <NAME> + "/messages")
Также я не думаю, что это хорошая практика связывать тип высокого уровня, такой как ChatRoom, с реализацией firestore. Поэтому я бы удалил его и создал интерфейс, который скрывает детали того, как хранятся чат-комнаты и сообщения. Вы можете сделать что-то вроде этого.
type Repo interface {
GetChatRoom(name string) (ChatRoom, error)
GetMessages(name string) ([]Messages, error)
}