Golang 中如何判断 Map 中的 net.Conn 类型变量?
如何判断 golang 中 map 中的 net.conn 类型变量?
在你提供 []map[string]interface{} 类型的变量中,每个元素 client["conn"] 都存储了一个 net.conn 类型,这个问题的目的是判断如何正确判断其类型。
为了进行类型判断,可以使用反射。但是,你当前编写的代码行 if reflect.typeof(cconn{}) == *net.tcpconn 存在错误。正确的类型判断方式应使用类型断言:
if conn, ok := m["conn"].(*net.TCPConn); ok { // do something with conn }
类型断言语法 "x, ok := y.(t)" 用于将变量或接口值 "y" 断言为类型 "t"。如果断言成功,"x" 被赋予断言后的值,"ok" 被设置为 true。否则,"x" 被赋予零值,"ok" 被设置为 false。
在提供的代码片段中,它将客户端映射中的 "conn" 元素断言为 *net.tcpconn 类型。如果断言成功(即客户端具有 tcp 连接),则可以对 conn 执行操作。否则,如果断言失败(即客户端不具有 tcp 连接),则不会执行任何操作。