18695


下記の関数を用いてstring型のスライスを逆順に並べ替えました。しかし、戻ってきた値が空のスライスになってしまいます。  
なぜでしょうか

[code]

    func reverseTweets(tweets []string) []string {
        result := make([]string, len(tweets))
        cnt := 0
        for i := len(tweets) - 1; i <= 0; i++ {
            result[cnt] = tweets[i]
            cnt++
        }
        return result
    }
    tweets = reverseTweets(tweets)
    
[/code]


CC BY-SA 3.0
2015-11-11T13:43:42.633
18694
2015-11-11T14:52:50.180
2015-11-11T14:52:50.180
7290
7232
question
go
string 型のスライスが空になる

[code]

    for i := len(tweets) - 1; i >= 0; i-- { ... }
    
[/code]

ではないでしょうか。

* * *

本題とは関係はないのですが、スライスの内容を逆順に並べ替える方法として以下の様な方法もあります。新たなスライスを作らずに対象のスライスを直接変更します。

[code]

    package main
    
    import "fmt"
    
    func reverseTweets(tw []string) {
        for i, j := 0, len(tw)-1; i < j; i, j = i+1, j-1 {
            tw[i], tw[j] = tw[j], tw[i]
        }
    }
    
    func main() {
        tweets := []string{"foo", "bar", "baz", "Hello", "World"}
        reverseTweets(tweets)
        fmt.Println(tweets)
    }
    => [World Hello baz bar foo]
    
[/code]

ご参考までにどうぞ。


CC BY-SA 3.0
2015-11-11T14:07:27.363
18695
2015-11-11T14:42:36.627
2015-11-11T14:42:36.627
7290
18694
answer