package main
import "fmt"
func reverse(str string) string {
if len(str) <= 1 {
return str
}
sli := make([]byte, 0)
for _, v := range str {
sli = append(sli, byte(v))
}
for i := 0; i < len(sli) / 2; i++ {
tmp := sli[i]
sli[i], sli[len(str)-i-1] = sli[len(str)-i-1], tmp
fmt.Printf("\tsli%d:%s\n", i, sli)
}
// 通過ASCII碼進行大小寫的轉化
// 65-90(A-Z),97-122(a-z)
for k, v := range sli {
if v < 65 || (v > 90 && v < 97) || v > 122 {
continue
} else if v >= 65 && v <= 90 {
v += 32
} else if v >= 97 && v <= 122 {
v -= 32
}
sli[k] = v
}
return string(sli)
}
func main() {
str := "Hello!"
fmt.Println(reverse(str))
}
Output:
sli0:!elloH
sli1:!olleH
sli2:!olleH
!OLLEh