【问题标题】:What does 'sconn, ok:= conn.(*tls.Conn)' mean? [duplicate]'sconn, ok:= conn.(*tls.Conn)' 是什么意思? [复制]
【发布时间】:2020-08-21 04:01:12
【问题描述】:

我在某个人的代码中遇到了一条语句 ** sconn, ok:= conn.(*tls.Conn) **。
我猜这是某种类型的转换? conn 是 net.Conn 的类型。这可以将 conn 转换为 *tls.Conn

我不确定这是什么意思。这个语法是什么意思?

【问题讨论】:

  • 这是一个“类型断言”。请参加围棋之旅,尤其是tour.golang.org/methods/15 ff。
  • 感谢您的快速回复。我很迷惑。很容易接受字符串“123”可以转换为整数或数字类型。但是对于这个, net.Conn 只是 tls.Conn 的一部分。怎么转换成 tls.Conn?

标签: go ssl grammar


【解决方案1】:

它试图断言conn(可能具有接口类型)是*tls.Conn(可能是满足接口的类型)并分配(如果值是接口类型值的基础)(现在* tls.Conn) 到sconn。如果它是正确的底层类型,ok 变量将包含布尔值true,否则为布尔值false

https://golang.org/ref/spec#Type_assertions

【讨论】:

  • 知道了。我检查了源代码,它说“tls.Conn 实现了 net.Conn 接口”。所以这个断言在哪里有效。
猜你喜欢
  • 1970-01-01
  • 2022-11-18
  • 2019-09-12
  • 2015-01-22
  • 2019-07-16
  • 2020-10-27
  • 2015-07-15
  • 2018-07-17
  • 2012-08-13
相关资源
最近更新 更多