[{"data":1,"prerenderedAt":335},["ShallowReactive",2],{"content:\u002F2025\u002F08\u002Fgo-channel2":3,"surround:\u002F2025\u002F08\u002Fgo-channel2":326},{"id":4,"title":5,"body":6,"categories":304,"date":306,"description":307,"draft":308,"extension":309,"image":310,"meta":311,"navigation":42,"path":313,"permalink":310,"published":310,"readingTime":314,"recommend":310,"references":310,"seo":319,"sitemap":320,"stem":321,"tags":322,"type":324,"updated":306,"__hash__":325},"content\u002Fposts\u002F2025\u002F08\u002Fgo-channel2.md","缓冲区为 1 和无缓冲区的 channel 有什么区别",{"type":7,"value":8,"toc":300},"minimark",[9,14,182,185,292,296],[10,11,13],"h3",{"id":12},"缓冲区为-1","缓冲区为 1",[15,16,21],"pre",{"className":17,"code":18,"language":19,"meta":20,"style":20},"language-go shiki shiki-themes github-light github-dark","package main\n\nimport \"fmt\"\n\nfunc main() {\n\tch := make(chan int, 1)\n\n\tch \u003C- 1\n\n\tfmt.Println(\"ch中的值为\", \u003C-ch)\n}\n","go","",[22,23,24,37,44,60,65,88,123,128,144,149,176],"code",{"__ignoreMap":20},[25,26,29,33],"span",{"class":27,"data-line":28,"line":28},"line",1,[25,30,32],{"class":31},"szBVR","package",[25,34,36],{"class":35},"sScJk"," main\n",[25,38,40],{"class":27,"data-line":39,"line":39},2,[25,41,43],{"emptyLinePlaceholder":42},true,"\n",[25,45,47,50,54,57],{"class":27,"data-line":46,"line":46},3,[25,48,49],{"class":31},"import",[25,51,53],{"class":52},"sZZnC"," \"",[25,55,56],{"class":35},"fmt",[25,58,59],{"class":52},"\"\n",[25,61,63],{"class":27,"data-line":62,"line":62},4,[25,64,43],{"emptyLinePlaceholder":42},[25,66,68,71,74,78,81,85],{"class":27,"data-line":67,"line":67},5,[25,69,70],{"class":31},"func",[25,72,73],{"class":35}," main",[25,75,77],{"class":76},"sSDpw","(",[25,79,80],{"class":76},")",[25,82,84],{"class":83},"sVt8B"," ",[25,86,87],{"class":76},"{\n",[25,89,91,95,98,101,104,107,110,113,116,120],{"class":27,"data-line":90,"line":90},6,[25,92,94],{"class":93},"indent","\t",[25,96,97],{"class":83},"ch ",[25,99,100],{"class":31},":=",[25,102,103],{"class":35}," make",[25,105,77],{"class":106},"sJX2D",[25,108,109],{"class":31},"chan",[25,111,112],{"class":31}," int",[25,114,115],{"class":83},", ",[25,117,119],{"class":118},"sj4cs","1",[25,121,122],{"class":106},")\n",[25,124,126],{"class":27,"data-line":125,"line":125},7,[25,127,43],{"emptyLinePlaceholder":42},[25,129,131,133,135,138,141],{"class":27,"data-line":130,"line":130},8,[25,132,94],{"class":93},[25,134,97],{"class":83},[25,136,137],{"class":31},"\u003C",[25,139,140],{"class":31},"-",[25,142,143],{"class":118}," 1\n",[25,145,147],{"class":27,"data-line":146,"line":146},9,[25,148,43],{"emptyLinePlaceholder":42},[25,150,152,154,157,160,162,165,167,169,171,174],{"class":27,"data-line":151,"line":151},10,[25,153,94],{"class":93},[25,155,156],{"class":83},"fmt.",[25,158,159],{"class":35},"Println",[25,161,77],{"class":106},[25,163,164],{"class":52},"\"ch中的值为\"",[25,166,115],{"class":83},[25,168,137],{"class":31},[25,170,140],{"class":31},[25,172,173],{"class":83},"ch",[25,175,122],{"class":106},[25,177,179],{"class":27,"data-line":178,"line":178},11,[25,180,181],{"class":76},"}\n",[10,183,184],{"id":184},"无缓冲区",[15,186,188],{"className":17,"code":187,"language":19,"meta":20,"style":20},"package main\n\nimport \"fmt\"\n\nfunc main() {\n\tch := make(chan int)\n\n\tch \u003C- 1\n\n\tfmt.Println(\"ch中的值为\", \u003C-ch)\n}\n",[22,189,190,196,200,210,214,228,246,250,262,266,288],{"__ignoreMap":20},[25,191,192,194],{"class":27,"data-line":28,"line":28},[25,193,32],{"class":31},[25,195,36],{"class":35},[25,197,198],{"class":27,"data-line":39,"line":39},[25,199,43],{"emptyLinePlaceholder":42},[25,201,202,204,206,208],{"class":27,"data-line":46,"line":46},[25,203,49],{"class":31},[25,205,53],{"class":52},[25,207,56],{"class":35},[25,209,59],{"class":52},[25,211,212],{"class":27,"data-line":62,"line":62},[25,213,43],{"emptyLinePlaceholder":42},[25,215,216,218,220,222,224,226],{"class":27,"data-line":67,"line":67},[25,217,70],{"class":31},[25,219,73],{"class":35},[25,221,77],{"class":76},[25,223,80],{"class":76},[25,225,84],{"class":83},[25,227,87],{"class":76},[25,229,230,232,234,236,238,240,242,244],{"class":27,"data-line":90,"line":90},[25,231,94],{"class":93},[25,233,97],{"class":83},[25,235,100],{"class":31},[25,237,103],{"class":35},[25,239,77],{"class":106},[25,241,109],{"class":31},[25,243,112],{"class":31},[25,245,122],{"class":106},[25,247,248],{"class":27,"data-line":125,"line":125},[25,249,43],{"emptyLinePlaceholder":42},[25,251,252,254,256,258,260],{"class":27,"data-line":130,"line":130},[25,253,94],{"class":93},[25,255,97],{"class":83},[25,257,137],{"class":31},[25,259,140],{"class":31},[25,261,143],{"class":118},[25,263,264],{"class":27,"data-line":146,"line":146},[25,265,43],{"emptyLinePlaceholder":42},[25,267,268,270,272,274,276,278,280,282,284,286],{"class":27,"data-line":151,"line":151},[25,269,94],{"class":93},[25,271,156],{"class":83},[25,273,159],{"class":35},[25,275,77],{"class":106},[25,277,164],{"class":52},[25,279,115],{"class":83},[25,281,137],{"class":31},[25,283,140],{"class":31},[25,285,173],{"class":83},[25,287,122],{"class":106},[25,289,290],{"class":27,"data-line":178,"line":178},[25,291,181],{"class":76},[293,294,295],"p",{},"缓冲区为 1 能正常输出 1\n而无缓冲区会死锁，因为在往 channel 置入值，当前 goroutine 就会被挂起，消费者无法接收 channel 传入的值",[297,298,299],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sSDpw, html code.shiki .sSDpw{--shiki-default:#005cc5;--shiki-dark:#79b8ff}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJX2D, html code.shiki .sJX2D{--shiki-default:#e36209;--shiki-dark:#ffab70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":20,"searchDepth":62,"depth":62,"links":301},[302,303],{"id":12,"depth":46,"text":13},{"id":184,"depth":46,"text":184},[305],"Go语言","2025-08-04","带缓冲区的 channel（如容量为 1）允许发送方先发送后接收，不会立即阻塞；而无缓冲区的 channel 发送操作会阻塞当前 goroutine，直到有接收方同步接收，否则会造成死锁。因此缓冲区提供了发送和接收的解耦能力。",false,"md",null,{"slots":312},{},"\u002F2025\u002F08\u002Fgo-channel2",{"text":315,"minutes":316,"time":317,"words":318},"1 min read",0.49,29400,98,{"title":5,"description":307},{"loc":313},"posts\u002F2025\u002F08\u002Fgo-channel2",[323],"channel","tech","ecXKBCb1h40-FK8V4Bew-z57PqG3VgZLLpN-wPItZzs",[327,331],{"title":328,"path":329,"stem":330,"date":306,"type":324,"children":-1},"Go Channel 基础概念与用法","\u002F2025\u002F08\u002Fgo-channel1","posts\u002F2025\u002F08\u002Fgo-channel1",{"title":332,"path":333,"stem":334,"date":306,"type":324,"children":-1},"Go Channel 生产者消费者模型","\u002F2025\u002F08\u002Fgo-channel3","posts\u002F2025\u002F08\u002Fgo-channel3",1786555056498]