zoukankan      html  css  js  c++  java
  • golang注意问题

    关于slice

    我们都知道slice是在通过参数传递的时候传递的是引用

    slice的appen操作是有返回值的,并不改变原值

    例如 

    b := []int {1,2,3,4}
    c:=append(b, 5)
    // b 不变

    另外,在使用make方法建立slice的时候,make([]int,0,3),这里第二个参数代表len,第三个参数代表cap,第三个参数可以省略。如果省略,两个就都是0

    闭包和go

    注意闭包都是引用传递

    a := [3]string {"a","b","c"}
    func (){a[1] = "gg"}()
    fmt.Println(a)
    闭包传递的都是指针
        a := []string {"a","b","c"}
        for _,v := range a {
            func (){
                fmt.Println(v)
            }()
        }
    正常是不会有什么问题的
    s := []string{"a","b","c"}
    for _,v := range s{
    go func(){
    fmt.Println(v)}
    }()
    
    // 这种情况下打印的都是ccc
    // 如果想打印abc需要传递参数
  • 相关阅读:
    C++官方文档-静态成员
    C++官方文档-this
    C++官方文档-运算符重载
    springboot-dokcer
    HDU 1073
    HDU 1070
    UVa 213
    HDU 1150
    POJ 1274
    POJ 2594
  • 原文地址:https://www.cnblogs.com/yxi-liu/p/8546481.html
Copyright © 2011-2022 走看看