我需要一个 (string
, int
) 对的队列。这很容易:
type job struct {
url string
depth int
}
queue := make(chan job)
queue <- job{url, depth}
Go 中有内置的对/元组数据类型吗?支持returning multiple values从一个函数,但 AFAICT,产生的多值元组不是 Go 类型系统中的一等公民。是这样吗?
至于“你尝试过什么”部分,显而易见的语法(来自 Python 程序员的 POV)
queue := make(chan (string, int))
没用。
最佳答案
你可以这样做。它看起来比元组更冗长,但这是一个很大的改进,因为您可以进行类型检查。
编辑:按照尼克的建议,用完整的工作示例替换片段。 Playground 链接:http://play.golang.org/p/RNx_otTFpk
package main
import "fmt"
func main() {
queue := make(chan struct {string; int})
go sendPair(queue)
pair := <-queue
fmt.Println(pair.string, pair.int)
}
func sendPair(queue chan struct {string; int}) {
queue <- struct {string; int}{"http:...", 3}
}
匿名结构和字段非常适合这种快速而肮脏的解决方案。但是,除了最简单的情况之外,您最好像之前那样定义一个命名结构。
关于go - Go中的对/元组数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13670818/