Answers:
你可以这样做。它看起来比元组更罗word,但这是一个很大的改进,因为您可以进行类型检查。
编辑:按照尼克的建议,用完整的工作示例替换了代码段。游乐场链接: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}
}
匿名结构和字段适用于此类快速而肮脏的解决方案。但是,对于除最简单的情况以外的所有情况,最好像定义一样定义命名结构。
如果需要,您可以执行以下操作
package main
import "fmt"
type Pair struct {
a, b interface{}
}
func main() {
p1 := Pair{"finished", 42}
p2 := Pair{6.1, "hello"}
fmt.Println("p1=", p1, "p2=", p2)
fmt.Println("p1.b", p1.b)
// But to use the values you'll need a type assertion
s := p1.a.(string) + " now"
fmt.Println("p1.a", s)
}
但是,我认为您已经完全习惯了,该结构完美地描述了您的数据,这比使用普通元组有很大的优势。