<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Channel on Ricky</title><link>https://linzeyan.github.io/zh-tw/categories/channel/</link><description>Recent content in Channel on Ricky</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><lastBuildDate>Thu, 22 Jun 2023 21:25:05 +0800</lastBuildDate><atom:link href="https://linzeyan.github.io/zh-tw/categories/channel/index.xml" rel="self" type="application/rss+xml"/><item><title>channel 的 15 条规则和底层实现</title><link>https://linzeyan.github.io/zh-tw/posts/2023/20230622-go-channel-rules/</link><pubDate>Thu, 22 Jun 2023 21:25:05 +0800</pubDate><guid>https://linzeyan.github.io/zh-tw/posts/2023/20230622-go-channel-rules/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://mp.weixin.qq.com/s/AsytcOBg0XpTnPzDq7iEhQ" target="_blank" rel="noopener">channel 的 15 条规则和底层实现&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="操作规则">操作规则&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: center">操作&lt;/th>
&lt;th style="text-align: center">nil&lt;/th>
&lt;th style="text-align: center">已关闭的 channel&lt;/th>
&lt;th style="text-align: center">未关闭有缓冲区的 channel&lt;/th>
&lt;th style="text-align: center">未关闭无缓冲区的 channel&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: center">关闭&lt;/td>
&lt;td style="text-align: center">panic&lt;/td>
&lt;td style="text-align: center">panic&lt;/td>
&lt;td style="text-align: center">成功关闭，然后可以读取缓冲区的值，读取完之后，继续读取到的是 channel 类型的默认值&lt;/td>
&lt;td style="text-align: center">成功关闭，之后读取到的是 channel 类型的默认值&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: center">接收&lt;/td>
&lt;td style="text-align: center">阻塞&lt;/td>
&lt;td style="text-align: center">不阻塞，读取到的是 channel 类型的默认值&lt;/td>
&lt;td style="text-align: center">不阻塞，正常读取值&lt;/td>
&lt;td style="text-align: center">阻塞&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: center">发送&lt;/td>
&lt;td style="text-align: center">阻塞&lt;/td>
&lt;td style="text-align: center">panic&lt;/td>
&lt;td style="text-align: center">不阻塞，正常写入值&lt;/td>
&lt;td style="text-align: center">阻塞&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="编译规则">编译规则&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: center">操作&lt;/th>
&lt;th style="text-align: center">channel 類型&lt;/th>
&lt;th style="text-align: center">結果&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: center">接收&lt;/td>
&lt;td style="text-align: center">只写 channel&lt;/td>
&lt;td style="text-align: center">编译错误&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: center">发送&lt;/td>
&lt;td style="text-align: center">只读 channel&lt;/td>
&lt;td style="text-align: center">编译错误&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: center">关闭&lt;/td>
&lt;td style="text-align: center">只读 channel&lt;/td>
&lt;td style="text-align: center">编译错误&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item></channel></rss>