Avatar ·

Go 中有用于遍历切片元素的 foreach 循环吗?

大家好!我刚刚在 Python 和 JavaScript 之后开始学习 Go,遇到了一个意想不到的难题。在 Python 中,我习惯写 `for item in my_list:`,在 JS 中则是 `arr.forEach(item => ...)`。而在 Go 中,我只看到经典的 `for i := 0; i < len(slice); i++ {}`——这正常吗? 我有一个简单的字符串切片: ```go names := []string{"Alice", "Bob", "Charlie"} ``` 我想把每个名字单独打印在一行。在 Python 中,我会这样写: ```python for name in names: print(name) ``` 而在 Go 中,我不得不这样写: ```go for i := 0; i < len(names); i++ { fmt.Println(names[i]) } ``` 这样能工作,但看起来很笨重。我觉得我遗漏了某种优雅的语法。我尝试搜索 "foreach in Go",但答案让我困惑——有人说没有 foreach,有人展示了带有 `range` 的结构。 请告诉我: 1. Go 中是否有其他语言中 foreach 的类似物? 2. 如果有,如何正确使用它? 3. 在性能方面有区别吗?