12.6 Example: Decoding S-Expressions
For each Marshal
function provided by the standard library’s
encoding/...
packages, there is a corresponding
Unmarshal
function that does decoding.
For example, as we saw in Section 4.5, given a byte slice
containing JSON-encoded data for our Movie
type (§12.3), we can decode it like this:
data := []byte{/* ... */} var movie Movie err := json.Unmarshal(data, &movie)
The Unmarshal
function uses reflection to modify the fields of
the existing movie
variable, creating new maps, structs, and
slices as determined by the type Movie
and the content of the
incoming data.
Let’s now implement a simple Unmarshal
function for
S-expressions, analogous to the standard json.Unmarshal
Get The Go Programming Language now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.