2019年3月23日土曜日

開発環境

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES) (Alan A.A. Donovan(著)、Brian W. Kernighan(著)、柴田 芳樹(翻訳)、丸善出版)の第4章(コンポジット型)、4.2(スライス)、4.2.2(スライス内での技法)、練習問題4.7の解答を求めてみる。

コード

package main

import (
 "fmt"
 "unicode/utf8"
)

func main() {
 bss := [][]byte{
  []byte(""),
  []byte("a"),
  []byte("ab"),
  []byte("abc"),
  []byte("日本語"),
  []byte("日a本b語c"),
 }
 for _, bs := range bss {
  fmt.Printf("%q\n", bs)
  fmt.Printf("%q\n\n", reverse(bs))
 }
}

func reverse(bs []byte) []byte {
 out := bs[:0]
 rs := []rune(string(bs))
 n := utf8.RuneCountInString(string(bs))
 for i := 0; i < n; i++ {
  for _, b := range []byte(string(rs[n-i-1])) {
   out = append(out, b)
  }
 }
 return out
}

入出力結果(cmd(コマンドプロンプト)、Terminal)

C:\Users\...>go run sample7.go 
""
""

"a"
"a"

"ab"
"ba"

"abc"
"cba"

"日本語"
"語本日"

"日a本b語c"
"c語b本a日"


C:\Users\...>

0 コメント:

コメントを投稿