parent
e42d830a83
commit
03fa1d4854
@ -0,0 +1,53 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
//闭包
|
||||
func adder(x int) func(int) int {
|
||||
return func(y int) int {
|
||||
x += y
|
||||
return x
|
||||
}
|
||||
}
|
||||
|
||||
func suffixFunc(suffix string) func(string) string {
|
||||
return func(name string) string {
|
||||
if !strings.HasSuffix(name, suffix) {
|
||||
return name + suffix
|
||||
}
|
||||
return name
|
||||
}
|
||||
}
|
||||
|
||||
func cal(base int) (func(int) int, func(int) int) {
|
||||
add := func(i int) int {
|
||||
base += i
|
||||
return base
|
||||
}
|
||||
|
||||
sub := func(i int) int {
|
||||
base -= i
|
||||
return base
|
||||
}
|
||||
return add, sub
|
||||
}
|
||||
|
||||
func main() {
|
||||
a, b := cal(10)
|
||||
fmt.Println(a(20), b(30))
|
||||
fmt.Println(a(100), b(80))
|
||||
|
||||
//jpgFunc := suffixFunc(".jpg")
|
||||
//res := jpgFunc("test.jpg")
|
||||
//fmt.Println(res)
|
||||
|
||||
//a := adder(10)
|
||||
//fmt.Println(a(20))
|
||||
//fmt.Println(a(40))
|
||||
//
|
||||
//b := adder(20)
|
||||
//fmt.Println(b(40))
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func f1() int {
|
||||
x := 5
|
||||
defer func() {
|
||||
x++
|
||||
}()
|
||||
return x
|
||||
}
|
||||
|
||||
func f2() (x int) {
|
||||
defer func() {
|
||||
x++
|
||||
}()
|
||||
return 5
|
||||
}
|
||||
|
||||
func f3() (y int) {
|
||||
x := 5
|
||||
defer func() {
|
||||
x++
|
||||
}()
|
||||
return x
|
||||
}
|
||||
func f4() (x int) {
|
||||
defer func(x int) {
|
||||
x++
|
||||
}(x)
|
||||
return 5
|
||||
}
|
||||
func main() {
|
||||
fmt.Println(f1())
|
||||
fmt.Println(f2())
|
||||
fmt.Println(f3())
|
||||
fmt.Println(f4())
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println("start\n")
|
||||
defer fmt.Println("1")
|
||||
defer fmt.Println("2")
|
||||
defer fmt.Println("3")
|
||||
fmt.Printf("end\n")
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func calc(index string, a, b int) int {
|
||||
ret := a + b
|
||||
fmt.Println(index, a, b, ret)
|
||||
return ret
|
||||
}
|
||||
|
||||
func main() {
|
||||
x := 1
|
||||
y := 2
|
||||
defer calc("AA", x, calc("A", x, y))
|
||||
x = 10
|
||||
defer calc("BB", x, calc("B", x, y))
|
||||
y = 20
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package main
|
||||
|
||||
import "errors"
|
||||
|
||||
func main() {
|
||||
tt("*")
|
||||
}
|
||||
|
||||
func add(a, b int) int {
|
||||
return a + b
|
||||
}
|
||||
|
||||
func sub(a, b int) int {
|
||||
return a - b
|
||||
}
|
||||
|
||||
func tt(s string) (func(a, b int) int, error) {
|
||||
switch s {
|
||||
case "+":
|
||||
return add, nil
|
||||
case "-":
|
||||
return sub, nil
|
||||
default:
|
||||
err := errors.New("输入错误")
|
||||
return nil, err
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
var temp int64 = 10
|
||||
|
||||
func main() {
|
||||
fmt.Println(temp)
|
||||
test()
|
||||
fmt.Println(temp)
|
||||
|
||||
s := "test2"
|
||||
suffix := ".png"
|
||||
res := test2(s, suffix)
|
||||
fmt.Println(res)
|
||||
}
|
||||
|
||||
func test2(s, suffix string) bool {
|
||||
t1 := len(s) >= len(suffix)
|
||||
t2 := s[len(s)-len(suffix):] == suffix
|
||||
temp := t1 && t2
|
||||
return temp
|
||||
}
|
||||
|
||||
func test() {
|
||||
fmt.Println(temp)
|
||||
temp = 100
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func funcA() {
|
||||
fmt.Println("func A")
|
||||
}
|
||||
|
||||
func funcB() {
|
||||
//recover接受panic抛出的异常
|
||||
//recover只能在defer函数中调用才会生效
|
||||
//defer一定要在可能引发panic的语句之前定义
|
||||
defer func() {
|
||||
err := recover()
|
||||
if err != nil {
|
||||
fmt.Println("recover in B")
|
||||
}
|
||||
}()
|
||||
panic("panic in B")
|
||||
}
|
||||
|
||||
func funcC() {
|
||||
fmt.Println("func C")
|
||||
}
|
||||
func main() {
|
||||
funcA()
|
||||
funcB()
|
||||
funcC()
|
||||
}
|
Loading…
Reference in new issue