Files

32 lines
475 B
Go

package main
import (
"fmt"
)
type LazyMap func() map[string]string
func Make(ctr func() map[string]string) LazyMap {
var initialized bool
var data map[string]string
return func() map[string]string {
if !initialized {
data = ctr()
initialized = true
ctr = nil // for GC
}
return data
}
}
func main() {
data := Make(func() map[string]string {
return make(map[string]string)
})
fmt.Println(data())
data()["key"] = "value"
fmt.Println(data())
}