update: directory structure
This commit is contained in:
68
advfuncs/07-deferred-funcs/main.go
Normal file
68
advfuncs/07-deferred-funcs/main.go
Normal file
@ -0,0 +1,68 @@
|
||||
// For more tutorials: https://blog.learngoprogramming.com
|
||||
//
|
||||
// Copyright © 2018 Inanc Gumus
|
||||
// Learn Go Programming Course
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// single()
|
||||
// stacked()
|
||||
findTheMeaning()
|
||||
}
|
||||
|
||||
func findTheMeaningNoDefer() {
|
||||
start := time.Now()
|
||||
fmt.Printf("%s starts...\n", "findTheMeaning")
|
||||
|
||||
// do some heavy calculation...
|
||||
time.Sleep(time.Second * 2)
|
||||
|
||||
fmt.Printf("%s took %v\n", "findTheMeaning", time.Since(start))
|
||||
}
|
||||
|
||||
func findTheMeaning() {
|
||||
defer measure("findTheMeaning")()
|
||||
|
||||
// do some heavy calculation
|
||||
time.Sleep(time.Second * 2)
|
||||
}
|
||||
|
||||
func measure(name string) func() {
|
||||
start := time.Now()
|
||||
fmt.Printf("%s starts...\n", name)
|
||||
|
||||
return func() {
|
||||
fmt.Printf("%s took %v\n", name, time.Since(start))
|
||||
}
|
||||
}
|
||||
|
||||
func stacked() {
|
||||
for count := 1; count <= 5; count++ {
|
||||
defer fmt.Println(count)
|
||||
}
|
||||
|
||||
fmt.Println("the stacked func returns")
|
||||
}
|
||||
|
||||
func single() {
|
||||
var count int
|
||||
|
||||
// defer func() {
|
||||
// fmt.Println(count)
|
||||
// }()
|
||||
defer fmt.Println(count)
|
||||
|
||||
count++
|
||||
// fmt.Println(count)
|
||||
|
||||
// the defer runs here
|
||||
// fmt.Println(count)
|
||||
}
|
Reference in New Issue
Block a user