• 请不要在回答技术问题时复制粘贴 AI 生成的内容
k8ser
V2EX  ›  程序员

do...while 语句 ,做了一年开发,从来没用到过,是不是我太菜了。

  •  
  •   k8ser · Mar 27, 2019 · 9563 views
    This topic created in 2605 days ago, the information mentioned may be changed or developed.
    68 replies    2019-03-28 17:47:56 +08:00
    Kaiv2
        1
    Kaiv2  
       Mar 27, 2019 via Android
    这。。。怎么联想的。不自信?
    whoami9894
        2
    whoami9894  
       Mar 27, 2019 via Android
    用哪种循环结构还不是看个人习惯,而且 Go 里只有个 for
    baronOvO
        3
    baronOvO  
       Mar 27, 2019 via Android
    有什么必然关系吗?
    适用场景的问题吧
    fngtz
        4
    fngtz  
       Mar 27, 2019 via iPhone   ❤️ 36
    没用过这个语句不能说明你菜。

    但是你这样想,大概率还是能说明你菜的。
    terence4444
        5
    terence4444  
       Mar 27, 2019
    我会尽量少用这种不确定循环次数的语句,用到就要非常小心退出条件。
    k8ser
        6
    k8ser  
    OP
       Mar 27, 2019
    谢谢大家,发帖前没有谨慎思考。本意是想知道大家有没有用到。挺常见但是自己几乎没有用到。
    watzds
        7
    watzds  
       Mar 27, 2019
    do {…} while(false) 见过吗
    th1nk
        8
    th1nk  
       Mar 27, 2019
    laravel 框架从来不用 else,牛逼不牛逼。
    k8ser
        9
    k8ser  
    OP
       Mar 27, 2019
    @watzds 没有
    @th1nk NB$L
    charliecheng
        10
    charliecheng  
       Mar 27, 2019
    我一般都用 try{} catch{}
    sugars
        11
    sugars  
    PRO
       Mar 27, 2019
    不要为了用而用
    Raymon111111
        12
    Raymon111111  
       Mar 27, 2019
    4L 说的对
    Variazioni
        13
    Variazioni  
       Mar 27, 2019
    三年了。。表示也没用过。。甚至有时候需要先执行过程也想不起 do while。。一直都是用 for。。线程里的永真循环就用 while。。
    k9982874
        14
    k9982874  
       Mar 27, 2019
    do..while 在某些情况下函数内代码分块,划分变量作用域,替代 goto 还是很好用的
    binux
        15
    binux  
       Mar 27, 2019 via Android
    可以用来优化代码结构,但是不必要。
    arthas2234
        16
    arthas2234  
       Mar 27, 2019
    Java。。。一直用 foreach
    Febers
        17
    Febers  
       Mar 27, 2019 via iPhone
    用过一次,Java 的 readLine 判空读取文件,用 Kotlin 的时候只能写成 do...while
    Febers
        18
    Febers  
       Mar 27, 2019 via iPhone
    @Febers 其实也可以在循环里边 break,但是还是用了 do...while ~倒也说明了很不常用~~~
    zhuangzhuang1988
        19
    zhuangzhuang1988  
       Mar 27, 2019
    除了 c /c ++ 里 宏用过 别的地方从来没用过
    Mac
        20
    Mac  
       Mar 27, 2019 via Android
    还有人用几百万条 if then 开发游戏呢,能跑就行
    duql
        21
    duql  
       Mar 27, 2019
    很不喜欢在 do..while 里 break 来代替 goto 那种代码,增加了一层缩进,也没比 goto 清晰多少
    pkookp8
        22
    pkookp8  
       Mar 27, 2019 via Android   ❤️ 1
    真想打死说 goto 不好的人,代码结构是看写法,不是看关键字的
    逻辑混乱不用 goto 也混乱
    逻辑清晰 setjump 都能看的明明白白
    darknoll
        23
    darknoll  
       Mar 27, 2019
    do...while 不是用来循环的,用来写宏函数的
    mortonnex
        24
    mortonnex  
       Mar 27, 2019
    do {}
    while(false)

    这种写法爽的一匹
    dfourc
        25
    dfourc  
       Mar 27, 2019
    一直用 for 从来没用过 do...while
    des
        26
    des  
       Mar 27, 2019 via Android
    do {} while(false) 加 break,只用过这种
    notreami
        27
    notreami  
       Mar 27, 2019
    golang 码农表示,完全不知道还有这个玩法。。
    SuperMild
        28
    SuperMild  
       Mar 27, 2019
    其实基本上都用 for,连 while 都很少用到( C 语言除外)。
    LiHaiWordGe
        29
    LiHaiWordGe  
       Mar 27, 2019
    do {}
    while(false)

    shangfabao
        30
    shangfabao  
       Mar 27, 2019
    那你单用过 while 么?
    AV1
        31
    AV1  
       Mar 27, 2019
    其他语言不做评论,但是如果在 JS 里用 do{break}while(false)的话,那就真的太菜了,因为 JS 有更优雅的 labeled block 用法。
    k8ser
        32
    k8ser  
    OP
       Mar 27, 2019
    @shangfabao 记得用过,哈哈
    marsgt
        33
    marsgt  
       Mar 27, 2019
    是。
    下一个问题。😉
    marsgt
        34
    marsgt  
       Mar 27, 2019
    其实用不用无所谓吧,for 已经基本能满足 90%的场景了。前两天学 c 才知道,Go 语言里连 while 关键字都省了,直接抓 for 来兼职(不分段形式就是 while )……
    jinksw
        35
    jinksw  
       Mar 27, 2019
    C 语言会把这个用在定义宏上面
    因为 用别的实现不了

    🤔具体我忘了,不过我在书上看到过,在哪看到的忘了
    R4mble
        36
    R4mble  
       Mar 27, 2019
    我都不怎么用 while
    attackonFourier
        37
    attackonFourier  
       Mar 27, 2019
    js 循环都可以拿掉 用递归来代替
    cortexm3
        38
    cortexm3  
       Mar 27, 2019
    do {} while(0)
    firebroo
        39
    firebroo  
       Mar 27, 2019
    c/c++的宏吧。。
    qianji201712
        40
    qianji201712  
       Mar 27, 2019
    for foreach while 这三个就够了,do while 个人感觉使用怪怪的,主次颠倒了
    avenger
        41
    avenger  
       Mar 27, 2019 via iPhone
    goto 用过吗?;-)
    uleh
        42
    uleh  
       Mar 27, 2019
    说明你不是一个 C 程序员 :doge:
    0x11901
        43
    0x11901  
       Mar 27, 2019
    虽说这么想确实有点菜,不过讲道理的话还是要看看你用的是什么语言,如果需要编译开编译器优化的话,三种常见的循环结构最终机器码应该是一致的,不一致请去砍写编译器的人🔪
    0x11901
        44
    0x11901  
       Mar 27, 2019
    @0x11901 所以只是一个品味问题。
    bravecarrot
        45
    bravecarrot  
       Mar 27, 2019 via iPhone
    只用过 for 和 while
    工作一年了 do while 从没用过
    cpp 程序员
    zwh2698
        46
    zwh2698  
       Mar 27, 2019 via Android
    可以取消 goto 语句,优化流程。
    RyougiShiki
        47
    RyougiShiki  
       Mar 27, 2019
    所以 python 里没有它
    iffi
        48
    iffi  
       Mar 27, 2019
    可以用来重试,比较适合语意,即至少执行 1 次。do{请求}while(在重试次数限制范围内 && 第一次请求失败)
    inoki
        49
    inoki  
       Mar 27, 2019 via Android
    @watzds PHP src 里 zend engine 的 macro ?
    Akiyu
        50
    Akiyu  
       Mar 27, 2019
    我在真实环境下用到的 do{}while(false) 是为了那个 break
    在某一条件不成立的时候可以立马 break 出去
    Joyboo
        51
    Joyboo  
       Mar 27, 2019
    golang 一招 for 走天下
    YuTengjing
        52
    YuTengjing  
       Mar 27, 2019 via Android
    do while 场景有限,不过一年开发,如果是业务开发,讲道理是应该会碰到过
    xiangyuecn
        53
    xiangyuecn  
       Mar 27, 2019
    @watzds #7 do {…} while(false) 用的少,因为多了一个 do,记不住这么多语法。。。不过 while(true){... break}用的炒鸡多。
    herozzm
        54
    herozzm  
       Mar 27, 2019
    并不是,go 直接没有 do while,说明这个没有多少存在感
    Nicoco
        55
    Nicoco  
       Mar 27, 2019
    表示主力用 for,用 do { } while () 较少
    dremy
        56
    dremy  
       Mar 27, 2019 via iPhone
    do … where 用来做重试逻辑很方便啊,where 里面做是否需要重试的判断就好了
    meiyoumingzi6
        57
    meiyoumingzi6  
       Mar 27, 2019 via Android
    没用过

    可能因为我是个 python 猿
    bp0
        58
    bp0  
       Mar 27, 2019
    有些公司的编程规范要求函数不能多个 return,这时可以用 do{}while(0)加 break 模拟。

    另外一种情况就是正宗的 do while 用法,确实某些情况下需要先执行一次,然后再进行判断。
    yim7
        59
    yim7  
       Mar 28, 2019
    python 太菜了,没见过 do while
    qsbaq
        60
    qsbaq  
       Mar 28, 2019
    php 中从没用过 do while
    freedomshi
        61
    freedomshi  
       Mar 28, 2019
    chtcrack
        62
    chtcrack  
       Mar 28, 2019
    do while 和 for 差别很小的..for 写起来会比 do while 简单一些..看个人习惯吧.举例 int i=0;
    while(i<10)
    {
    i++;
    }
    上面的 while 和下面 for 其实执行的都是一个鸟样.
    for(int i=0;i<10;i++)
    {
    }
    jadeity
        63
    jadeity  
       Mar 28, 2019
    这就是个冗余的表达方式,存在但是没必要,所以 golang 只有一个 for (非褒非贬)。
    gamexg
        64
    gamexg  
       Mar 28, 2019
    go 里面只剩下了 for ...

    另外 c 里面虽然知道,但是印象真没用过。
    Paual
        65
    Paual  
       Mar 28, 2019
    do,while {} 可以进行重试机制吧,这个也是看大神的代码的时候看到的
    do {

    //进行相关操作

    } while ($this->result() !=0 $count<3) 可以进行重试机制,当函数 result 的结果不为 0,进行 do while 循环中的内容,也就是当函数结果没有执行成功的时候可以进行循环代码中的代码,也即重试机制
    Paual
        66
    Paual  
       Mar 28, 2019
    代码应该是这个:
    $count = 0;
    do {

    //进行相关操作

    } while ($this->result() !=0 && $count<3) 可以进行重试机制,当函数 result 的结果不为 0,进行 do while 循环中的内容,也就是当函数结果没有执行成功的时候可以进行循环代码中的代码,也即重试机制
    viger
        67
    viger  
       Mar 28, 2019
    do{}while(0)用的最多,主要是为了解决多层嵌套判断问题。
    当然如果有时候需要先执行一波再来判断的循环也会用到,不过这种场景比较少
    dearmymy
        68
    dearmymy  
       Mar 28, 2019
    我就是这么搞的,
    int liRet = -1
    do
    {
    liRet = doSomething()
    if(liRet !=0)
    break
    .....
    liRet = 0
    }while(false)
    return liRet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   944 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1243ms · UTC 20:07 · PVG 04:07 · LAX 13:07 · JFK 16:07
    ♥ Do have faith in what you're doing.