Symbol table datastructure?

Is this data structure different than map/hash table ?

Where can I find a Go implementation of it ?

You mean something like this: https://en.wikipedia.org/wiki/Symbol_table ?

I wrote some symbol table code for a programming language compiler recently, and was surprised at how simple and easy it was in Go. If that’s the kind of symbol table you need, yes, go ahead and use a map. If you need to store different types of data in it, you can do it using an interface{} type, somewhat like this:

type symbol struct {
        name string
        value interface{}
}

var symbol_table map[string]symbol

// allocate the symbol table (done just once, before using it)
func new_symtab() {
        symbol_table = make(map[string]symbol)
}

and then add functions for adding and looking up symbols. The last time I did this it was in C, and it took hundreds of lines of code!

The interface{} type works somewhat like a union in C, or “sum type” in some other languages. It allows you to store values of various types in the same variable.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.