review-2

来源:互联网 发布:360浏览器有mac版吗 编辑:程序博客网 时间:2024/06/17 11:07

UNO. 彩色terminal (windows下用gitbash之类的玩意儿)

package mainimport (    "github.com/fatih/color"    "fmt")func main() {    fmt.Println("This", color.RedString("warning"), "should be not negelected")}

DOS. 指针的使用

package mainimport (    "fmt")func doToIt(a *[]string){    *a = append(*a, "hello")}func main() {    var a []string // yes. there is one.     doToIt(&a)    fmt.Printf("%+v\n", a)    b := new([]string)    *b = []string{"uno", "cinco", "ocho"}    fmt.Printf("%p: %+v\n", b, *b)}

TRES.array的复制

package mainimport (    "fmt")func main() {    a:=[]string{"uno","dos","tres"}    //b := a[:]  // a and b are still refer to the samce slicei    var b []string    b = append(b, a...)    a[1] = "cinco"    fmt.Printf("%p: %+v\n", &a, a)    fmt.Printf("%p: %+v\n", &b, b)    fmt.Println()    c := new([]string)    *c = append(*c, b...)    // change to b     b[2] = "seis"    fmt.Printf("%p: %+v\n", &b, b)    fmt.Printf("%p: %+v\n", c, *c)}

CUATRO.就地修改

package mainimport (    "fmt")func main() {    a := []string{"uno", "dos", "tres"}    for i, _ := range a {        //v += ">"        a[i] += ">"    }    fmt.Printf("%+v\n", a)}

CINCO.range循环中删除map元素

package mainimport (    "fmt")func main() {    fmt.Println("happy")    a := map[string]bool{        "uno":  true,        "dos":  false,        "tres": true,    }    for k, v := range a {        _ = v        fmt.Printf("%v\n", a[k])        delete(a, k)    }    fmt.Printf("%+v\n", a)}

refer to
https://stackoverflow.com/questions/23229975/is-it-safe-to-remove-selected-keys-from-golang-map-within-a-range-loop

SEIS.range over

package mainimport (    "fmt")func f() []string {    fmt.Printf("multiple times??\n")    //return nil    return []string{"uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez"}}func main() {    for _, v := range f() {        fmt.Println(v)    }}

SIETE.深入理解引用值

package mainimport (    "fmt")func f1(a []string) {    for i, f := range a {        a[i] = f + ":>>"    }}func main() {    a1 := []string{"uno", "dos", "tres"}    f1(a1)    fmt.Printf("%+v\n", a1)}

OCHO.深入理解append

package mainimport (    "fmt")func main() {    //strs:=append(nil, "str")    // good to go    strs := append([]string(nil), "str")    fmt.Printf("%+v\n", strs)}

类型很重要

NUEVE.行内调用. (创造scope)

package mainimport (    "fmt")func main() {    fmt.Printf("%v\n", func() int {        return 100    }())    fmt.Println("good to go")}

DIEZ.函数对象

package mainimport (    "fmt")type xstru struct {    str string}func (x *xstru) doUpdate(s string) {    x.str = s}func (x *xstru) printNow() {    fmt.Printf("This is <%v>\n", x.str)}func f1(receiver func(string)) {    receiver("fuck")}func main() {    var me xstru    f1(me.doUpdate)    me.printNow()}
原创粉丝点击