drxnfdx798517235 2017-10-28 00:10
浏览 86

如何在Golang中检查指向结构net.IPNet的Pointer的nil值

How can I check the nil value as a result of the assignment of variable b below?

package main

import (
    "fmt"
    "net"
)


type Subnet struct {
    ID                int
    IP                *net.IPNet
}

func main() {
    var s = Subnet{
        ID: 12345,
        IP: &net.IPNet{
            IP:   net.IP{10, 1, 232, 0},
            Mask: net.IPMask{255, 255, 255, 0},
        },
    }
    fmt.Printf("%+v
", s)
    var b = Subnet{
        ID: 12345,
        IP: &net.IPNet{},
    }
    fmt.Printf("%+v
", b)
    if b.IP == nil {
        fmt.Println("hello there")
    }
}

Here is the go playground https://play.golang.org/p/Jk6_3ofyH5

Basically, I expect that "hello there" will be printed out as b.IP is nil, but it did not.

  • 写回答

4条回答 默认 最新

  • doukao5073 2017-10-28 02:38
    关注

    The check should be like, if b.IP != nil { fmt.Println("hello there") } And the output will have hello-world,

    {ID:12345 IP:10.1.232.0/24} {ID:12345 IP:} hello there

    Note:Golang's nil is not same as Cpp's NULL, it is the opposite.

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?