mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 03:55:28 +08:00
41 lines
971 B
Go
Executable File
41 lines
971 B
Go
Executable File
package main
|
|
|
|
import "fmt"
|
|
|
|
func reverse(s string) string {
|
|
runes := []rune(s)
|
|
n, h := len(runes), len(runes)/2
|
|
for i:= 0; i < h; i ++ {
|
|
runes[i], runes[n-1-i] = runes[n-1-i], runes[i]
|
|
}
|
|
return string(runes)
|
|
}
|
|
|
|
func main() {
|
|
// reverse a string:
|
|
str := "Google"
|
|
sl := []byte(str)
|
|
var rev [100]byte
|
|
j := 0
|
|
for i:=len(sl)-1; i >= 0; i-- {
|
|
rev[j] = sl[i]
|
|
j++
|
|
}
|
|
str_rev := string(rev[:])
|
|
fmt.Printf("The reversed string is -%s-\n", str_rev)
|
|
// variant: "in place" using swapping
|
|
str2 := "Google"
|
|
sl2 := []byte(str2)
|
|
for i, j := 0, len(sl2) - 1; i < j; i, j = i+1, j-1 {
|
|
sl2[i], sl2[j] = sl2[j], sl2[i]
|
|
}
|
|
fmt.Printf("The reversed string is -%s-\n", string(sl2))
|
|
// variant: using [] int for runes (necessary for Unicode-strings!):
|
|
s := "My Test String!"
|
|
fmt.Println(s, " --> ", reverse(s))
|
|
}
|
|
/* Output:
|
|
The reversed string is -elgooG-
|
|
The reversed string is -elgooG-
|
|
My Test String! --> !gnirtS tseT yM
|
|
*/ |