반응형
Go에서 슬라이스를 반대로 반복하는 방법이 있습니까?
다음과 같이 말할 수 있으면 편리합니다.
for _, element in reverse range mySlice {
...
}
범위 1에 추가 할 편리한 연산자가 없습니다. 일반적인 for 루프 카운트 다운을 수행해야합니다.
s := []int{5, 4, 3, 2, 1}
for i := len(s)-1; i >= 0; i-- {
fmt.Println(s[i])
}
다음을 수행 할 수도 있습니다.
s := []int{5, 4, 3, 2, 1}
for i := range s {
fmt.Println(s[len(s)-1-i]) // Suggestion: do `last := len(s)-1` before the loop
}
산출:
1
2
3
4
5
또한 여기 : http://play.golang.org/p/l7Z69TV7Vl
색인이있는 변형
for k := range s {
k = len(s) - 1 - k
// now k starts from the end
}
사용 연기 방법 :
s := []int{5, 4, 3, 2, 1}
for i, _ := range s {
defer fmt.Println(s[i])
}
하나는 채널을 사용하여 복제하지 않고 함수의 목록을 반전시킬 수 있습니다. 내 의미에서 코드를 더 멋지게 만듭니다.
package main
import (
"fmt"
)
func reverse(lst []string) chan string {
ret := make(chan string)
go func() {
for i, _ := range lst {
ret <- lst[len(lst)-1-i]
}
close(ret)
}()
return ret
}
func main() {
elms := []string{"a", "b", "c", "d"}
for e := range reverse(elms) {
fmt.Println(e)
}
}
참고 URL : https://stackoverflow.com/questions/13190836/is-there-a-way-to-iterate-over-a-slice-in-reverse-in-go
반응형
'Development Tip' 카테고리의 다른 글
jar 파일의 버전을 확인하는 방법은 무엇입니까? (0) | 2020.10.18 |
---|---|
node.js에서 쿼리 문자열 구문 분석 (0) | 2020.10.18 |
Mongoose에서 두 개의 OR 쿼리를 AND와 결합 (0) | 2020.10.18 |
moment.js-UTC가 잘못된 날짜를 제공합니다. (0) | 2020.10.18 |
Java 날짜 형식-추가 문자 포함 (0) | 2020.10.18 |