package main
funcmain(){
fmt.Println(fib(70))}var fibs [100]uint64funcfib(n uint)(res uint64){if fibs[n]!=0{
res = fibs[n]return}if n <2{
res =1}else{
res =fib(n-1)+fib(n-2)}
fibs[n]= res
return}
闭包封装
package main
funcmain(){var once sync.Once
once.Do(task1Wrapper(2,3))
once.Do(task1Wrapper("2",3))
once.Do(task1Wrapper("hello","world"))}// http://topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/sync.html#synconce// interface{} 可以表示任意类型functask1(m, n interface{}){
fmt.Println(m, n)}functask1Wrapper(m, n interface{})func(){// 使用闭包做一层封装,供那些只接收无参的方法使用returnfunc(){task1(m, n)}}
package 中的常识
package main
import(."fmt"// 使用 fmt 下的方法,可以忽略 `fmt.`_"studygo/book_manage"// 使用 _ ,可以不使用该包中的方法,且自动调用该包中的 init() 方法
ind "studygo/interface_demo"// 导入的包起别名)// 初始化方法,会自动调用funcinit(){Println("当前包初始化方法")}funcmain(){Println("Hello world")
ind.BlankInterfaceDemo4()}
局部作用域
funcTest1(t *testing.T){if v := math.Pow(2,10); v >1000{
fmt.Printf("2^10=%f > 1000\n", v)// v的作用域只在当前 {} 内}var osName =""switch os := runtime.GOOS; os {case"darwin":
osName ="MacOs"case"linux":
osName ="Linux"default:
osName = os
}
fmt.Println(osName)}
funcTest4(t *testing.T){var x =10
v := reflect.ValueOf(x)
fmt.Println(v.Kind())
fmt.Println(v.Kind()== reflect.Int)
w := reflect.TypeOf(x)
fmt.Println(w.Name())
fmt.Println(w.Name()=="int")}
sort
funcTest5(t *testing.T){var ints =[...]int{7,3,9,2,7,1,0,45,6}
a := sort.IntSlice(ints[:])
sort.Sort(a)
fmt.Println(a)}