不是的.从Go FAQ:
为什么没有指针算法?
安全.如果没有指针算法,就有可能创建一种永远不会派生出不正确成功的非法地址的语言.编译器和硬件技术已经发展到使用数组索引的循环可以与使用指针算法的循环一样高效的地步.此外,缺少指针算法可以简化垃圾收集器的实现.
也就是说,你可以通过使用unsafe
软件包来解决这个问题,但是just don't:
package main
import "fmt"
import "unsafe"
func main() {
vals := []int{10, 20, 30, 40}
start := unsafe.Pointer(&vals[0])
size := unsafe.Sizeof(int(0))
for i := 0; i < len(vals); i++ {
item := *(*int)(unsafe.Pointer(uintptr(start) + size*uintptr(i)))
fmt.Println(item)
}
}