7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go言語でスライスとか文字列関係の勉強をしてみた

7
Posted at

とても基本的なことなんだろうけど、普段自分のコードで書いたことなかったので調べてみた。適宜追加するかもしれない。

注意として、「こういう書き方がGoっぽい書き方かどうか分からない」という前提で読んで欲しい。

[]string型のスライスを一つの文字列にする

単純に文字列同士を繋げるのは+演算子で出来るので、今回は文字列を格納したスライスを一つの文字列にする方法に関してやってみた。

join.go
package main

import (
        "fmt"
        "strings"
)

func main() {
        s := []string{"ようこそ", "世界"}
        fmt.Println(strings.Join(s, ""))
}

こうすれば、ようこそ世界と出力されるはず。

[]string型のスライスの要素をソートする

sortパッケージを用いる。

sort_asc_1.go
package main

import (
	"fmt"
	"sort"
)

func main() {
	s := []string{"運", "いう", "ウン", "アナタ", "あなた", "うん", "言う", "イウ", "貴方"}
	sort.Strings(s)
	fmt.Println(s)
}

こう書くと[あなた いう うん アナタ イウ ウン 言う 貴方 運]と昇順に出力される。

こういう風にも書ける。

sort_asc_2.go
package main

import (
	"fmt"
	"sort"
)

func main() {
	s := []string{"運", "いう", "ウン", "アナタ", "あなた", "うん", "言う", "イウ", "貴方"}
	
	sort.StringSlice(s).Sort()
	fmt.Println(s)
}

降順(文字列でもこう言うのだろうか?)の場合は下のようにするといいみたい。理由は知らない。もっと効率よくて分かりやすい書き方があるかもしれない。

sort_desc.go
package main

import (
	"fmt"
	"sort"
)

func main() {
	s := []string{"運", "いう", "ウン", "アナタ", "あなた", "うん", "言う", "イウ", "貴方"}
	
	sort.Sort(sort.Reverse(sort.StringSlice(s)))
	fmt.Println(s)
}

こうすると[運 貴方 言う ウン イウ アナタ うん いう あなた]と出力される。ちゃんと降順になっているのがわかる。

疑問

スライスの要素を逆順にする関数とかメソッド(Pythonでいうreverseメソッドにあたるもの)、ないんですか? 軽く調べても見つからないんですが?

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?