Go編程基礎-項目與坑

來源:互聯網
上載者:User

項目與坑

slice容量問題

初始容量被超過了,它會建立一個slice,然後把舊的內容拷貝過去,然後append資料,這就會導致底層數組改變了,期望的結果可能就不是預期的了

package mainimport("fmt")func Pingpong(s []int)  {    s = append(s,3)//原來的容量為0,append之後,重新分配了記憶體位址,s跟原來的slice s已經不是同一個了}func main(){    s := make([]int,0) //初始化slice s,初始容量為0,長度為0    fmt.Println(s)    Pingpong(s)    fmt.Println(s)}兩次列印的slice結果都是空[][]怎麼解決這個問題,真的修改修改slice?增加傳回值package mainimport("fmt")func Pingpong(s []int ) []int { //希望修改slice的,設定傳回值,通過傳回值去返回資料    s = append(s,4)//原來的容量為0,append之後,重新分配了記憶體位址,s跟原來的slice s已經不是同一個了    return s    }func main(){    s := make([]int, 0) //初始化slice s,初始容量為0,長度為0    fmt.Println(s)    s = Pingpong(s) //這裡取出傳回值    fmt.Println(s)}[][4]

time,用t.Format(time.ANSIC或者t.Format("Mon Jan _2 15:04:05 2006"這裡不能調整,否則時間差異極大

package mainimport(    "fmt"    "time")func main(){    t := time.Now()    fmt.Println(t)}2018-07-09 11:51:25.906284 +0800 CST m=+0.000278103如果不想要時區等資訊,用formatpackage mainimport("fmt""time")func main(){    t := time.Now()    fmt.Println(t.Format(time.ANSIC))}Mon Jul  9 11:54:15 2018https://gowalker.org/time#_constantspackage mainimport("fmt""time")func main(){    t := time.Now()    fmt.Println(t.Format("Mon Jan _2 15:04:05 2006")) //這裡是標準的對比時間,不能改變嗎,否則差異很大}Mon Jul  9 11:58:18 2018https://gowalker.org/time#_constantspackage mainimport("fmt""time")func main(){    t := time.Now()    fmt.Println(t.Format("Mon Jan _2 15:04:05 2006"))}Mon Jul  9 11:59:48 2018

range、for range與閉包的坑

package mainimport("fmt")func main(){    s := []string{"a","b","c"}    for _,v := range s{        go func() { //通過for range啟動doroutine,不用參數穿進去的值都是引用閉包的思想            fmt.Println(v)//這裡都是引用了v的地址,v全等於c        }()    }    select { //為了防止main退出,寫死slect    }}cccfatal error: all goroutines are asleep - deadlock!package mainimport("fmt")func main(){    s := []string{"a","b","c"}    for _,v := range s{        go func(v string) { //通過for range啟動doroutine,不用參數穿進去的值都是引用閉包的思想            fmt.Println(v)//這裡都是引用了v的地址,v全等於c        }(v)    }    select { //為了防止main退出,寫死slect    }}c //這裡輸出a和b,並不全是cba
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.