我的问题是切片长度和容量.我正在学习Go go:https://tour.golang.org/moretypes/11.
(我的问题被标记为的可能重复此 ;然而,这不是这种情况我的问题是特别关于切断的切片的前几个元素和其含义.).
为什么线s = s[2:]下降时的能力s = s[:4]和s = s[:0]不?我看到的唯一区别是冒号前面s = s[2:]有一个数字,而另外两行中冒号后面有一个数字.
有没有办法恢复我们切断的前两个元素s = s[2:]?
package main
import "fmt"
func main() {
s := []int{2, 3, 5, 7, 11, 13}
printSlice(s)
// Slice the slice to give it zero length.
s = s[:0]
printSlice(s)
// Extend its length.
s = s[:4]
printSlice(s)
// Drop its first two values.
s = s[2:]
printSlice(s)
}
func …Run Code Online (Sandbox Code Playgroud) 我是Go的新手.当我评论第二个goroutine时,有一个致命的错误.我不明白导致此错误的原因.你能解释一下吗?
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan int)
go func() {
for i := 0; i < 10; i++ {
ch <- i
}
} ()
// go func() {
for {
if num, ok := <-ch; !ok {
break
} else {
fmt.Printf("%d\n", num)
}
}
// } ()
time.Sleep(2 * time.Second)
close(ch)
}
Run Code Online (Sandbox Code Playgroud)
这将打印以下代码:
0
1
2
3
4
5
6
7
8
9
fatal error: all goroutines are asleep - …Run Code Online (Sandbox Code Playgroud)