V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
admirez
V2EX  ›  Go 编程语言

chan<- T 说是只能发送值到 chan,这个限定意义是什么?总要读取 chan 的值啊

  •  
  •   admirez · 2018-02-13 17:48:05 +08:00 · 1559 次点击
    这是一个创建于 2477 天前的主题,其中的信息可能已经有所发展或是发生改变。
    9 条回复    2018-02-14 08:32:19 +08:00
    ke1e
        1
    ke1e  
       2018-02-13 17:50:35 +08:00 via Android
    你可以 for 循环读取 chan 值也可以 T <- chan
    ke1e
        2
    ke1e  
       2018-02-13 17:51:34 +08:00 via Android
    @ke1e T := <-chan
    SuperFashi
        3
    SuperFashi  
       2018-02-13 18:10:38 +08:00
    楼上好像没看懂……

    个人觉得只是防止写错手滑而已,让编译器来帮你纠正,就和运行时的 const 一样。
    ZSeptember
        4
    ZSeptember  
       2018-02-13 18:49:28 +08:00 via Android
    楼上说的对,一般用 channel 都是单向的,一端生产,一端消费。
    dtynn
        5
    dtynn  
       2018-02-13 19:11:39 +08:00
    一般是用在将 chan 作为参数传递的场景, 避免生产端做出了消费的操作. 或者如上面楼层说的, 避免手滑写错.
    <-chan T 也类似, 不过是仅可消费
    owenliang
        6
    owenliang  
       2018-02-13 22:01:12 +08:00 via Android
    可以读 close 事件吧?
    lxml
        7
    lxml  
       2018-02-13 22:10:04 +08:00
    <- chan T only-Read
    chan <- T ony-Write-Close

    个人感觉有点像 make([]int64, len, cap) 语法后面的那个 cap,没什么大的用,缺这个特性也没啥。
    danielzhang0212
        8
    danielzhang0212  
       2018-02-14 05:03:44 +08:00
    赞同 #5 @dtynn 的解释。
    zhs227
        9
    zhs227  
       2018-02-14 08:32:19 +08:00
    防止只能读的设计被庸人误用来写数据,或者自己手 抖打错了。简单类比一下 class 中的 private 关键字设计
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3329 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:21 · PVG 20:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.