SYMBOL INDEX (27 symbols across 4 files) FILE: behavioral/observer/main.go type Event (line 12) | type Event struct type Observer (line 20) | type Observer interface type Notifier (line 28) | type Notifier interface type eventObserver (line 43) | type eventObserver struct method OnNotify (line 54) | func (o *eventObserver) OnNotify(e Event) { type eventNotifier (line 47) | type eventNotifier struct method Register (line 58) | func (o *eventNotifier) Register(l Observer) { method Deregister (line 62) | func (o *eventNotifier) Deregister(l Observer) { method Notify (line 66) | func (p *eventNotifier) Notify(e Event) { function main (line 72) | func main() { FILE: concurrency/bounded_parallelism.go function walkFiles (line 17) | func walkFiles(done <-chan struct{}, root string) (<-chan string, <-chan... type result (line 43) | type result struct function digester (line 51) | func digester(done <-chan struct{}, paths <-chan string, c chan<- result) { function MD5All (line 66) | func MD5All(root string) (map[string][md5.Size]byte, error) { function main (line 105) | func main() { FILE: concurrency/parallelism.go type result (line 15) | type result struct function sumFiles (line 25) | func sumFiles(done <-chan struct{}, root string) (<-chan result, <-chan ... function MD5All (line 72) | func MD5All(root string) (map[string][md5.Size]byte, error) { function main (line 93) | func main() { FILE: structural/proxy/main.go function main (line 11) | func main() { type ITerminal (line 36) | type ITerminal interface type GopherTerminal (line 42) | type GopherTerminal struct method Execute (line 48) | func (gt *GopherTerminal) Execute(cmd string) (resp string, err error) { type Terminal (line 71) | type Terminal struct method Execute (line 98) | func (t *Terminal) Execute(command string) (resp string, err error) { function NewTerminal (line 77) | func NewTerminal(user string) (t *Terminal, err error) { function authorizeUser (line 117) | func authorizeUser(user string) (err error) {