C++ 有decltype(expr). 您可以声明某个其他表达式类型的对象。例如: decltype('c') a[4]将声明一个包含 4 个字符的数组。这是一个玩具示例,但此功能可能很有用。这是 UDP 服务器的一些 Go 代码:
conn, err := net.ListenUDP("udp", udp_addr)
...
defer conn.Close()
...
_, err = conn.WriteToUDP(data, addr)
重要的是我知道我可以用函数的(类型)结果做什么(在这种情况下,有一个连接,结果)ListenUDP,但我不知道这个类型是什么。在这里,因为 Go 的类型推断,我不需要知道。但是如果我想创建 5 个连接,那么我想要一个包含 5 个“结果ListenUDP”的数组。我做不到。我得到的最接近的是:
ret_type := reflect.TypeOf(net.DialUDP)
first_param_type := reflect.TypeOf(ret_type.Out(0))
my_arr := reflect.ArrayOf(4, first_param_type)
my_arr[0] = nil
但是最后一行不起作用。有没有办法在 Go 中做到这一点?
森栏
相关分类