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.