在 Go 中访问二维数组中的相邻元素的最有效方法是啥?
Posted
技术标签:
【中文标题】在 Go 中访问二维数组中的相邻元素的最有效方法是啥?【英文标题】:What is the most efficient way of visiting neighbor elements in a 2-D array in Go?在 Go 中访问二维数组中的相邻元素的最有效方法是什么? 【发布时间】:2016-01-16 12:18:13 【问题描述】:我遇到的问题是我必须访问二维数组中元素[i, j]
的所有八个邻居。
但是,考虑到数组越界的错误,我必须在[i-1, j]
或[i+1, j]
上做很多if else 语句...这对我来说有点冗长。
所以我想知道在 Go 中是否有任何有效的方法来解决这类问题? 喜欢错误捕捉系统?
【问题讨论】:
Go 是一种冗长的语言。它只有 4 或 8 次访问,具体取决于您是否要使用那些对角相邻的项目。只需用一个干净直接的条件结构写出来。仍然是 20-30 行的函数,这没什么大不了的。 我认为您解决问题的方法有误,您应该知道界限,也许如果您分享一些代码,有人可以提供更好的帮助。 唯一有效的方法是最小化所需的边界检查量。但我想你已经想通了。现在如何做到这一点完全取决于您的用例。您是否循环扫描整个阵列(元胞自动机)?或者你是在随机检查元素吗?分享一些代码肯定会有帮助。 【参考方案1】:一般的解决方案将遵循pseudo-code presented here。
请参阅 yucchiy/minesweeper field.go#GetNeighbors(x, y int)
的 Go 示例。
这取决于您是否可以使用由字段组成的实际 Array 对象来丰富您的数据结构,每个字段都知道它的邻居。然后“访问二维数组中的相邻元素”变成向字段询问作为其邻居的字段列表。
【讨论】:
以上是关于在 Go 中访问二维数组中的相邻元素的最有效方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章