The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
simenet

这个题有迷惑性

  •  
  •   simenet · Oct 12, 2020 · 2967 views
    This topic created in 2214 days ago, the information mentioned may be changed or developed.

    func f1() (r int) {

    defer func () {
        r++
    }()
    return 10
    

    }

    fmt.print(f1())

    输出居然不是 10 ??????????

    6 replies  •  2020-10-14 13:47:32 +08:00
    BingoXuan
    BingoXuan
    Oct 12, 2020
    1
    应该是编译器优化吧,定义返回值 r,r 的值为 10,defer 执行函数使 r 自增,返回 r,结果是 11 。
    gollwang
    gollwang
    Oct 12, 2020
    2
    你 return 10 不就相当于:
    r=10
    return r
    ?
    nomansky
    nomansky
    Oct 12, 2020
    3
    golang 基础题了
    Dganzh
    Dganzh
    Oct 12, 2020
    4
    这里 return 过程是
    赋值 r=10 ;
    执行 defer,r=11 ;
    返回 r=11 ;
    qq316107934
    qq316107934
    Oct 12, 2020❤️2
    5
    基础题了,区别于:

    func f1() (int) {
    r:=10
    defer func () {
    r++
    }()
    return r
    }
    reus
    reus
    Oct 14, 2020
    6
    是你自己没学好,官方博客都有一模一样的例子: https://blog.golang.org/defer-panic-and-recover
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3820 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 05:28 · PVG 13:28 · LAX 21:28 · JFK 00:28
    ♥ Do have faith in what you're doing.