您好,登錄后才能下訂單哦!
初始容量被超過了,它會新建一個(gè)slice,然后把舊的內(nèi)容拷貝過去,然后append數(shù)據(jù),這就會導(dǎo)致底層數(shù)組改變了,期望的結(jié)果可能就不是預(yù)期的了
package main
import("fmt")
func Pingpong(s []int) {
s = append(s,3)//原來的容量為0,append之后,重新分配了內(nèi)存地址,s跟原來的slice s已經(jīng)不是同一個(gè)了
}
func main(){
s := make([]int,0) //初始化slice s,初始容量為0,長度為0
fmt.Println(s)
Pingpong(s)
fmt.Println(s)
}
兩次打印的slice結(jié)果都是空
[]
[]
怎么解決這個(gè)問題,真的修改修改slice?增加返回值
package main
import("fmt")
func Pingpong(s []int ) []int { //希望修改slice的,設(shè)置返回值,通過返回值去返回?cái)?shù)據(jù)
s = append(s,4)//原來的容量為0,append之后,重新分配了內(nèi)存地址,s跟原來的slice s已經(jīng)不是同一個(gè)了
return s
}
func main(){
s := make([]int, 0) //初始化slice s,初始容量為0,長度為0
fmt.Println(s)
s = Pingpong(s) //這里取出返回值
fmt.Println(s)
}
[]
[4]
package main
import(
"fmt"
"time"
)
func main(){
t := time.Now()
fmt.Println(t)
}
2018-07-09 11:51:25.906284 +0800 CST m=+0.000278103
如果不想要時(shí)區(qū)等信息,用format
package main
import(
"fmt"
"time"
)
func main(){
t := time.Now()
fmt.Println(t.Format(time.ANSIC))
}
Mon Jul 9 11:54:15 2018
https://gowalker.org/time#_constants
package main
import(
"fmt"
"time"
)
func main(){
t := time.Now()
fmt.Println(t.Format("Mon Jan _2 15:04:05 2006")) //這里是標(biāo)準(zhǔn)的對比時(shí)間,不能改變嗎,否則差異很大
}
Mon Jul 9 11:58:18 2018
https://gowalker.org/time#_constants
package main
import(
"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
package main
import(
"fmt"
)
func main(){
s := []string{"a","b","c"}
for _,v := range s{
go func() { //通過for range啟動doroutine,不用參數(shù)穿進(jìn)去的值都是引用閉包的思想
fmt.Println(v)//這里都是引用了v的地址,v全等于c
}()
}
select { //為了防止main退出,寫死slect
}
}
c
c
c
fatal error: all goroutines are asleep - deadlock!
package main
import(
"fmt"
)
func main(){
s := []string{"a","b","c"}
for _,v := range s{
go func(v string) { //通過for range啟動doroutine,不用參數(shù)穿進(jìn)去的值都是引用閉包的思想
fmt.Println(v)//這里都是引用了v的地址,v全等于c
}(v)
}
select { //為了防止main退出,寫死slect
}
}
c //這里輸出a和b,并不全是c
b
a
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。