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

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

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

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

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

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

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

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

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

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

    //进行相关操作

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

    //进行相关操作

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