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. 在性能方面有区别吗?