英文:
Check if all items in a slice are equal
问题
我需要创建一个函数,它能够:
- 如果切片中的所有元素都相等(它们将是相同的类型),则返回true。
- 如果切片中的任何元素不同,则返回false。
我能想到的唯一方法是反转切片,然后比较切片和反转后的切片。
有没有更好的方法来实现这个功能,既具有良好的语法又更高效?
英文:
I need to create a function that:
returns true if all elements in a slice are equal (they will all be the same type)
returns false if any elements in a slice are different
The only way I can think of doing it is to reverse the slice, and compare the slice and the reversed slice.
Is there a better way to do this thats good syntax and more efficient?
答案1
得分: 17
我不确定你对于反转切片的思路是什么,但那是不必要的。最简单的算法是检查第一个元素之后的所有元素是否都等于第一个元素:
func allSameStrings(a []string) bool {
for i := 1; i < len(a); i++ {
if a[i] != a[0] {
return false
}
}
return true
}
英文:
I am not sure what your though process was for reversing the slice was, but that would be unnecessary. The simplest algorithm would be to check to see if all elements after the the first are equal to the first:
func allSameStrings(a []string) bool {
for i := 1; i < len(a); i++ {
if a[i] != a[0] {
return false
}
}
return true
}
答案2
得分: 1
虽然有一个被接受的答案,但我只是用range
关键字发布它。
func allSameStrings(a []string) bool {
for i, v := range(a) {
if v != a[0] {
return false
}
}
return true
}
英文:
Although there is an accepted answer, I'm just posting it with range
keyword.
func allSameStrings(a []string) bool {
for i, v := range(a) {
if v != a[0] {
return false
}
}
return true
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论