Skip to Content
Learning Functional Programming in Go
book

Learning Functional Programming in Go

by Lex Sheehan
November 2017
Intermediate to advanced
670 pages
17h 35m
English
Packt Publishing
Content preview from Learning Functional Programming in Go

Dynamically scoped

What if we accidentally initialized sum in an outer scope from where we defined our  function? Notice that there is no sum variable initialization in the same scope as our anonymous function:

func addTwoDynamic() func() int {    return func() int {         sum += 2        return sum    }}

When we run this in our main() function:

twoMoreDynamic := addTwoDynamic()fmt.Println(twoMoreDynamic())fmt.Println(twoMoreDynamic())

Our Go runtime looks in the environment in which the anonymous function was called, rather than where it was defined (as is the case in lexical scoping). If addTwoDynamic had been nested several stack frames deep, our Go runtime would look where addTwoDynamic was defined for sum. If it was not found there, it would continue ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Learning Functional Programming

Learning Functional Programming

Jack Widman

Publisher Resources

ISBN: 9781787281394Supplemental Content