type Friend struct {
name string
age int
}
type Friends struct {
friends []Friend
}
Run Code Online (Sandbox Code Playgroud)
我想制作Friends范围,这意味着,如果我有一个my_friends带有类型的变量Friends,我可以循环使用:
for i, friend := range my_friends {
// bla bla
}
Run Code Online (Sandbox Code Playgroud)
Go有可能吗?
the*_*mue 13
有朋友成为一个结构?否则就干脆做
type Friends []Friend
Run Code Online (Sandbox Code Playgroud)
nem*_*emo 11
注意:正如deft_code所提到的,当循环中断时,此代码会泄漏通道和goroutine.不要将其用作一般模式.
在go中,没有办法使任意类型兼容range,因为
range只支持切片,数组,通道和映射.
您可以使用迭代通道range,如果您想要迭代动态生成的数据而不必使用切片或数组,这非常有用.
例如:
func Iter() chan *Friend {
c := make(chan *Friend)
go func() {
for i:=0; i < 10; i++ {
c <- newFriend()
}
close(c)
}()
return c
}
func main() {
// Iterate
for friend := range Iter() {
fmt.Println("A friend:", friend)
}
}
Run Code Online (Sandbox Code Playgroud)
这是你能够做出"适应性"的最接近的事情.
所以通常的做法是Iter()在你的类型上定义一个方法或类似的东西并将其传递给range.
请参阅规格以进一步阅读range.
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |