douzong2206
2018-02-07 15:16
浏览 75
已采纳

Go中的多个nil,nil ...检测

In go you can have several returns like:

func getAdressParts() (plz *string, street *string) {
    return nil, nil
}

func main() {

    //if getAdressParts() == nil, nill {
    //   println(true)
    //} else {
    //   println(false)
    //}

    // As already suggested the answer is:
    if plz, street := getAdressParts(); plz == nil && street == nil {
        println("Hurra")
    } else {
        println("nope")
    }

}

is there any way to check both inline for nil like:

if getAdressParts() == nil, nil {
   ...
}

you can play with example here: https://play.golang.org/p/xbHCxl_AJyw

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • donglu5235 2018-02-07 15:17
    已采纳

    Not quite that succinctly, but yes:

    if plz, street := getAdressParts(); plz == nil && street == nil {
        // Do stuff
    }
    

    This is demonstrated in the Go tour and the Go spec.

    Note as icza points out, this doesn't make any sense for strings (which can't be nil), but the syntax you'd use for a valid test is as above.

    打赏 评论
  • dongxie8856 2018-02-07 15:20

    string can't be nil, but i think you'll need to do

    if a, b := getAdressParts(); a == "" && b == "" {
        println("nil")
    }
    
    打赏 评论

相关推荐 更多相似问题