回答

收藏

Go 中的对/元组数据类型

技术问答 技术问答 186 人阅读 | 0 人回复 | 2023-09-12

在进行Go 在旅途的最后练习中,我决定我需要一个 ( string,int) 对的队列。这很容易:
* n+ j. o: r. ^( m

    ' x- ~" A' D1 z( k* R4 @
  • type job struct    url string    depth int}queue := make(chan job)queue 但这让我想:Go 有内置对/元组数据类型吗?支持从函数返回多个值,但 AFAICT,生成的多值元组不是 Go 类型系统中的一流公民。是这样吗?2 f; u! [- h( c7 h" [/ ]
  • 至于你尝试过什么部分,明显的语法(来自 Python 程序员的 POV)[code]queue := make(chan (string,int))
    8 a* i+ D8 e+ a. J
没有用。% E) a) E- o3 i$ B+ y+ W
                                                               
/ j( N+ g# d$ \. r1 Z    解决方案:                                                                  i5 d( h. `: X; i$ n3 P  W
                                                                Go没有元组类型,你是对的,函数返回的多个值并不代表一流的对象。* U) M- I  {0 |1 x! ]( F0 X
Nick 的答案显示了如何使用interface{}. (我可以用数组而不是结构来使它像元组一样索引,但关键思想是interface{}类型)
6 Z4 K9 `7 H" r1 L+ I我的另一个答案显示了如何做类似的事情来避免使用匿名结构来创建类型。
/ F3 {4 E, p! u7 v! a3 w; b这些技术具有元组的一些特点,但不是元组。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则