差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
public:it:go [2022/01/19 14:31] – [学习笔记] oakfirepublic:it:go [2022/11/10 12:37] (当前版本) – [Go Lang] oakfire
行 3: 行 3:
   * [[https://pkg.go.dev/std|标准库文档]]   * [[https://pkg.go.dev/std|标准库文档]]
   * [[https://go.dev/ref/spec|go 编程语言规范]]   * [[https://go.dev/ref/spec|go 编程语言规范]]
 +  * [[https://github.com/LearnGolang/LearnGolang|Golang 学习资源大全]]
  
 ===== 学习笔记 ===== ===== 学习笔记 =====
行 172: 行 173:
 v := <-ch  // 从 ch 接收值并赋予 v v := <-ch  // 从 ch 接收值并赋予 v
  </code>信道缓冲区(默认1)满时阻塞发送端,空时阻塞接收端。这让 goroutine 可以在没有显式的锁或竞态变量的情况下进行同步。  </code>信道缓冲区(默认1)满时阻塞发送端,空时阻塞接收端。这让 goroutine 可以在没有显式的锁或竞态变量的情况下进行同步。
-    * 发送者可通过 ''close'' 关闭一个信道 +    * 发送者可通过 ''close'' 关闭一个信道,只有发送者可关闭信道。 
-    * **select** 语句使一个 goroutine 协程可以等待多个通信操作。select 会阻塞到某个分支可以继续执行为止,这时就会执行该分支。当多个分支都准备好时会随机选择一个执行。+    * 接收者可以通过表达式第二个参数来测试信道是否被关闭:若没有值可以接收且信道已被关闭,那么在执行完<code> 
 +v, ok := <-ch</code>之后 ''ok'' 会被设置为 ''false''。 
 +    * 循环 ''for i := range ch'' 会不断从信道接收值,直到它被关闭 
 +    * **select** 语句使一个 goroutine 协程可以等待多个通信操作。select 会阻塞到某个分支可以继续执行为止,这时就会执行该分支。当多个分支都准备好时会随机选择一个执行。如果有 ''default'', 则在所有分支阻塞时执行 default。 
 +    * ''sync.Mutex'' 互斥锁
   * 了解该语言的编译/解释机制   * 了解该语言的编译/解释机制
 ===== 剖析 ===== ===== 剖析 =====
  • public/it/go.1642573913.txt.gz
  • 最后更改: 2022/01/19 14:31
  • oakfire