推 carylorrk: 確實在 go 中的 channel 主要是 1.34.244.41 10/11 01:06
→ carylorrk: 解決 producer consumer problem,第二 1.34.244.41 10/11 01:07
→ carylorrk: 個限制也是因爲認爲 channel 是否結束 1.34.244.41 10/11 01:08
→ carylorrk: 應由 producer 方決定。所以我主要是想 1.34.244.41 10/11 01:09
→ carylorrk: 問在 go 裏是否有更好的做法。只是 go 1.34.244.41 10/11 01:09
→ carylorrk: 沒有專版,所以只好 PO 來這XD 1.34.244.41 10/11 01:09
→ carylorrk: 嗯...正確來說應該是 CSP 本身就很適合 1.34.244.41 10/11 01:10
→ carylorrk: 解決 producer consumer problem 啦 1.34.244.41 10/11 01:11
→ carylorrk: 簡而言之, go 唯一可以自定 range 1.34.244.41 10/11 01:13
→ carylorrk: expression 行爲的只有 channel,但是 1.34.244.41 10/11 01:13
→ carylorrk: 想不到怎麼把 channel 對應到 request 1.34.244.41 10/11 01:14
→ carylorrk: 當然其實最後的做法沒錯,只要在文件上 1.34.244.41 10/11 01:15
→ carylorrk: 註明就好。只是想問有沒有更好的方式 1.34.244.41 10/11 01:15
→ yauhh: 第一個問題的答案,是要設計為 C/S 模型118.160.159.130 10/11 10:33
→ yauhh: producer-consumer只是 C/S 中的一段。118.160.159.130 10/11 10:34
→ yauhh: 什麼叫做把request對應到channel呢?118.160.159.130 10/11 10:35
→ yauhh: 比方說,HTTP連線不就是一個channel118.160.159.130 10/11 10:36
→ yauhh: 所謂request,不就是以client為producer,118.160.159.130 10/11 10:38
→ yauhh: 並且以server為consumer嗎?118.160.159.130 10/11 10:38
→ carylorrk: well...channel 是 go 語言內建的機制 1.34.244.41 10/11 13:48
→ carylorrk: 並不是一種概念或是模型,所以我才說這 1.34.244.41 10/11 13:53
→ carylorrk: 其實算是語言相關的問題 XD|| 1.34.244.41 10/11 13:53
→ yauhh: 不能只自顧自說coroutine是「內建」 175.96.217.184 10/11 22:59
→ yauhh: 問題就是你有這內建的東西卻做不出你要的。 175.96.217.184 10/11 23:00
→ carylorrk: 不是 coroutine,是 goroutine... 1.34.244.41 10/12 12:19
→ carylorrk: 我就是想不到方法無能爲力了才上來問問 1.34.244.41 10/12 12:20
→ carylorrk: 各位前輩高手囉 orz... 1.34.244.41 10/12 12:20
→ carylorrk: 而且有的時候語言限制就是這樣,我現在 1.34.244.41 10/12 12:22
→ carylorrk: 並不是無法實作出所要的功能,只是想問 1.34.244.41 10/12 12:23
→ carylorrk: 有沒有辦法提供更簡單的界面。就像 C++ 1.34.244.41 10/12 12:23
→ carylorrk: 語言沒有 concept 就只能用 static 1.34.244.41 10/12 12:24
→ carylorrk: assert + MACRO 來模擬,或是沒有 1.34.244.41 10/12 12:25
→ carylorrk: static reflection 就只能用其他方法摸 1.34.244.41 10/12 12:26
→ carylorrk: 擬,但是界面就是比較差比較複雜。 1.34.244.41 10/12 12:26
→ carylorrk: go 裏沒有 generic,所以我只能用 1.34.244.41 10/12 12:26
→ carylorrk: runtime reflection 來勉強渡過... 1.34.244.41 10/12 12:27
→ carylorrk: 因爲語言限制而使界面變複雜甚至無法實 1.34.244.41 10/12 12:32
→ carylorrk: 作也不是什麼罕事。我只是覺得想要達到 1.34.244.41 10/12 12:32
→ carylorrk: 用 range 來 iterate result,而且只有 1.34.244.41 10/12 12:33
→ carylorrk: channel + goroutine(都是 go 特有的, 1.34.244.41 10/12 12:33
→ carylorrk: 而非泛指類似的一般化的概念)才能自定 1.34.244.41 10/12 12:34
→ carylorrk: range expression 的行爲,不像 C++ 可 1.34.244.41 10/12 12:34
→ carylorrk: 以自定 iterator,又卡在提到的那兩點 1.34.244.41 10/12 12:35
→ carylorrk: 上。無法確定這是我不熟語言,還是真的 1.34.244.41 10/12 12:36
→ carylorrk: 無法達成或是有更好更符合 go 的idiom 1.34.244.41 10/12 12:36