32 lines
475 B
Go
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())
|
|
}
|