已采纳回答 / 记忆浅谈
这里的‘在被接受数据之前’指的是ch<-1存数据吧。缓冲的channel:保证往缓冲中存数据先于对应的取数据,简单说就是在取的时候里面肯定有数据,否则就因取不到而阻塞。所以缓冲的channel可能在取数据的时候发生阻塞。非缓冲的channel:保证取数据先于存数据,就是保证存的时候肯定有其他的goroutine在取,否则就因放不进去而阻塞。所以非缓冲的channel可能在存数据的时候会发生阻塞。
2019-04-07
package main
import (
"fmt"
)
func main() {
ch := make(chan int)
go func() {
fmt.Println("1")
ch <- 1
}()
<-ch
go func() {
fmt.Println("2")
ch <- 1
}()
<-ch
go func() {
fmt.Println("3")
ch <- 1
}()
<-ch
}
import (
"fmt"
)
func main() {
ch := make(chan int)
go func() {
fmt.Println("1")
ch <- 1
}()
<-ch
go func() {
fmt.Println("2")
ch <- 1
}()
<-ch
go func() {
fmt.Println("3")
ch <- 1
}()
<-ch
}
2019-04-07
func main() {
go fmt.Println("1")
time.Sleep(100*time.Millisecond)
go fmt.Println("2")
time.Sleep(200*time.Millisecond)
go fmt.Println("3")
time.Sleep(300*time.Millisecond)
}
go fmt.Println("1")
time.Sleep(100*time.Millisecond)
go fmt.Println("2")
time.Sleep(200*time.Millisecond)
go fmt.Println("3")
time.Sleep(300*time.Millisecond)
}
2019-04-07
这样不是更简单?
老师的方法也很好,但是感觉饶了路。之前也有遇到过
func main() {
for i := 0; i < 10; i++ {
fmt.Printf("%d ", fibonacci(i))
defer func(n int){
fmt.Printf("%d ", fibonacci(n))
}(i)
}
}
老师的方法也很好,但是感觉饶了路。之前也有遇到过
func main() {
for i := 0; i < 10; i++ {
fmt.Printf("%d ", fibonacci(i))
defer func(n int){
fmt.Printf("%d ", fibonacci(n))
}(i)
}
}
2019-04-06
已采纳回答 / qq_冥_6
可以看下这篇文章, 有详细解析 https://www.cppentry.com/bencandy.php?fid=78&aid=216871&page=1
2019-04-04
func read(r io.Reader) ([]byte, error) {
return ioutil.ReadAll(r)
}
return ioutil.ReadAll(r)
}
2019-03-05
func main() {
var wg1 sync.WaitGroup
var wg2 sync.WaitGroup
var wg3 sync.WaitGroup
wg1.Add(1)
wg2.Add(1)
wg3.Add(1)
go func() {
fmt.Println("1")
wg1.Done()
}()
go func() {
wg1.Wait()
fmt.Println("2")
wg2.Done()
}()
go func() {
wg1.Wait()
wg2.Wait()
fmt.Println("3")
wg3.Done()
}()
wg3.Wait()
}
var wg1 sync.WaitGroup
var wg2 sync.WaitGroup
var wg3 sync.WaitGroup
wg1.Add(1)
wg2.Add(1)
wg3.Add(1)
go func() {
fmt.Println("1")
wg1.Done()
}()
go func() {
wg1.Wait()
fmt.Println("2")
wg2.Done()
}()
go func() {
wg1.Wait()
wg2.Wait()
fmt.Println("3")
wg3.Done()
}()
wg3.Wait()
}
2019-03-05
16进制转10进制:
从右往左,位数*16^位数
所以16进制的-1000等于
0*16^0 = 0
0*16^0 = 0
0*16^0 = 0
1*16^3 = 4096
从右往左,位数*16^位数
所以16进制的-1000等于
0*16^0 = 0
0*16^0 = 0
0*16^0 = 0
1*16^3 = 4096
2019-02-18