package main import ( "fmt" "reflect" ) func B2S(bs []uint8) string { // 將字節切片轉換成字符串 ba := make([]byte, 0) // 創建一個字節切片,默認容量0 fmt.Println(ba, reflect.TypeOf(ba)) // 字節切片: [] 每一個元素是:uint8 類型: []uint8 for i, v := range bs { fmt.Println(i, v) ba = append(ba, v) } return string(ba) } func Char2S(cs []int32) string { return string(cs) // 將字符切片直接轉換成字符串 } func main() { // 1. 字符串和字節切片的互轉 bs := []byte("馬亞南") fmt.Println(bs) s1 := B2S(bs) fmt.Println(s1) // 2. 字符切片和字符串的互轉 charSlice := make([]int32, 0) a := "馬亞南" for i, v := range a { // 注意:range 也是賦值拷貝 fmt.Println(i, v) v = int32(20122) // a不會改變,還是馬亞南,因為range是賦值拷貝 charSlice = append(charSlice, v) // 由於charSlice是新構建的字符切片,所以它都是一個值 20122 } fmt.Println(a) s2 := Char2S(charSlice) fmt.Println(s2) }