一,字符串如何转换为数组(切片)

个人理解的是 切片是动态数组,因为我是c 出身,下面切片暂且直接叫做数组了

1.数组的创建:

var endpoint = []string{"0.0.0.0:2379"}  //直接初始化数组

//数组 <<= string
IPAddresses := []string{leftIP}

2.直接写进空的数组里面:

 etcd :="sdfsdferf"
 stringarr := make([]string, 0)      //创建空数组
 stringarr = append(stringarr, etcd)
 /*stringarr = append(stringarr, "456")*/
 println("*****")
 for _, str := range stringarr {
   println(str)
 }
 println("*****")

二,数组如何转换为字符串

1.将数组里的一个元素直接转化为字符串

 arr := make([]string, 0) 
 arr[0] = "sfsdfsdf"
 string := arr[0]  //直接将该数组的一个元素,赋值给字符串
 fmt.Printf("====>:%s\n", string)

2.将数组里面的数据全转换为字符串

func arrayToString(arr []string) string {
   var result string
   for _, i := range arr {  //遍历数组中所有元素追加成string
    	result += i
   }
   return result
}
  1. 字符串处理
ports := strings.Replace(ports, ",", "", 1)
字符串替换 替换第一个匹配的字符串//可用于去掉第一个指定的字符串
  1. 字符串 转换成切片来处理
1. string 底层是一个byte的数组,因此string也可以进行切片处理
str:="hello@163.com"
使用切片获取到163.com
scli:=str[6:]
fmt.Println("==== result: ",scli)

2. string是不可变得,不能通过 str[0] = "z" 的方式来修改(string存储在静态去)
编译就会报错

3. 如果要修改字符串,先将string转换为 []byte 然后修改
比如:str="hello@163.com",改成 str"zhello@163.com"

Arr1:=[]byte(str)
Arr1[0]="z"
str=string(Arr1)
注意,转成[]byte后,可以处理数字和字母,不能处理中文。它是按字节处理的,一个中文是3个字节

解决办法:将string转还成[]rune,因为[]rune 是按字符处理,兼容汉字

Arr2:=[]rune(str)
Arr2[0]="北"
str=string(Arr2)