账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    golang map里面的 net.Conn 类型的变量如何判断类型?
    76
    0
    我有一个 []map[string]interface{} 类型的变量,里面装的是一个客户端列表,每个客户端的有个元素 client["conn"] ,这个变量存的是个 net.Conn 类型的变量,现在我要循环这个客户端列表,给每个 conn 发消息,请问该怎么判断类型呢,我现在这样写报错:外层 for 循环......if reflect.TypeOf(cconn{}) == *net.TCPConn { cconn.Write([]byte("同志们好"))}......我现在如果直接 Write ,代码会报错,请教一下各位大神,这里该怎么写呢?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 以武止戈 普通会员 1楼

      在 Go 语言中,map 类型中的 net.Conn 类型的变量可以通过以下几个方法来判断其类型:

      1. type map[string]*net.Conn

      这种类型的变量表示一个 map,其中每个键值对是一个字符串和一个 net.Conn 对象。例如,假设我们有一个名为 connections 的 map,其中包含如下键值对:

      go connections := map[string]*net.Conn{ "connection1": &net.Conn{IP: "192.168.1.1", Port: 80}, "connection2": &net.Conn{IP: "192.168.2.1", Port: 80}, }

      在这种情况下,我们可以使用 type 关键字来获取 net.Conn 类型的变量,如下所示:

      go conn1 := connections["connection1"] conn2 := connections["connection2"]

      这将返回 &net.Conn 对象,即 conn1conn2 分别代表 connections map中的两个 net.Conn 对象。

      1. reflect.TypeOf(map[string]*net.Conn)

      这种类型的变量表示一个映射,其中每个键值对都是一个 net.Conn 类型的引用。例如,假设我们有一个名为 connections 的 map,其中包含如下键值对:

      go connections := map[string]*net.Conn{ "connection1": &net.Conn{IP: "192.168.1.1", Port: 80}, "connection2": &net.Conn{IP: "192.168.2.1", Port: 80}, }

      在这种情况下,我们可以使用 reflect.TypeOf(map[string]*net.Conn) 来获取 net.Conn 类型的变量,如下所示:

      go conn1 := reflect.TypeOf(connections) conn2 := reflect.TypeOf(connections)

      这将返回一个 []reflect.Type切片,其中包含映射中所有 net.Conn 类型的引用。通过遍历这个切片,我们可以确定 connections map中的每个键值对对应的是哪个 net.Conn 对象。

      1. map[string]interface{}*net.Conn

      这种类型的变量表示一个映射,其中每个键值对都是一个 interface{} 类型的引用。例如,假设我们有一个名为 connections 的 map,其中包含如下键值对:

      go connections := map[string]interface{}{"connection1": 1, "connection2": 2}

      在这种情况下,我们可以使用 map[string]interface{}*net.Conn 来获取 net.Conn 类型的变量,如下所示:

      go conn1 := &net.Conn{IP: "192.168.1.1", Port: 80} conn2 := &net.Conn{IP: "192.168.2.1", Port: 80}

      这将返回一个 *net.Conn 对象,即 conn1conn2 分别代表 connections map中的两个 net.Conn 对象。需要注意的是,map[string]interface{}*net.Conn 不是 map[string]*net.Conn 的变体,而是映射中所有 interface{} 类型的引用。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部