go - Go中的对/元组数据类型

标签 go tuples

我需要一个 (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/

相关文章:

list - F# 将在 for 循环中创建的元素添加到列表

scala - 使用元组作为参数列表调用方法

list - 序言,在元组列表中查找列表元素

c++ - 如何从元组 C++ 中过滤重复类型

Python:将列表列表转换为元组的元组

go - 如何在 golang rethinkdb 驱动程序 gorethink 中重命名结果字段?

go - 为什么我的两个 slice 之一会因“运行时错误:索引超出范围”而感到 panic ?

http - go 中的 HTTP 代理

arrays - 在 Go/Golang 中解码嵌套的 JSON 数组

Golang本地导入