2016-05-21 5 views
1

У меня есть простой вопрос ... Я пытаюсь воспроизвести эту рекурсивную структуру данных в Голанге с помощью фрагментов.Golang: Рекурсивные структуры данных

type Trie map[byte]Trie 

Прямо сейчас у меня есть «грубые» исходный код, используя рекурсивную структуру данных ниже дольки и все работает отлично, за исключением моей типизированных структуры является структурой, а не кусочек структуры. В идеале я бы хотел, чтобы моя типизированная рекурсивная структура данных была срезом Trie, в котором есть элементы Trie {byte, [] Trie}. Надеюсь, что это имеет смысл? Прямо сейчас у меня есть тип, который является структурой Trie {byte, [] Trie}.

type Trie struct { 
elem byte 
others []Trie 
} 

Возможно, это поможет. Когда я создаю свой кусочек Trie прямо сейчас, я использую эту функцию.

func CreateTrie() []Trie { 
    return make([]Trie, 0, 13) 
} 

Я хотел бы иметь TRIE срезов, определенных таким образом, что я мог бы создать ломтики, как это.

func CreateTrie() Trie { 
    return make(Trie, 0, 13) 
} 

Возможно ли это с помощью ломтиков или у меня есть мое первое (единственное) решение для срезов?

+0

Да, я не могу поверить, что это было так просто. Наверное, мне нужно время простоя. Спасибо – G4143

ответ

1

TLDR: Я думаю, что это возможно

Использование вашего TRIE STRUCT

type Trie struct { 
    elem byte 
    others []*Trie 
} 

Вот модифицированный createTrie конструктор. Я не был уверен, если вы хотите показать цепочку Trie, поэтому я решил пройти level как раз в качестве примера.

func createTrie(levels int) *Trie { 
    result := &Trie{ 
     others: make([]*Trie, 0, 13), 
    } 
    for level := 0 ;level < levels; level++ { 
     result.others = append(result.others, createTrie(levels - 1)) 
    } 

    return result 
} 

https://play.golang.org/p/-GRm0tV-B1

+0

Это лучшее решение, когда нет списка, но только рекурсивная ассоциация – kenfire

Смежные вопросы