神刀安全网

golang字符串切片的赋值

1. 在for循环的range中

func StrRangeTest() {    str := []string{"str1", "str2", "str3"}    for i, v := range str {       fmt.Println(i, v)       v = "test"    }    fmt.Println(str)}

结果:对v的赋值,不会改变字符创切片的值。

0 str1 1 str2 2 str3 [str1 str2 str3]

结论:range是浅拷贝


2. 在函数的参数传递

func Handler() {    strArr := []string{"str1", "str2", "str3"}       fmt.Println("before call func:", strArr)    strFuncTest(strArr)    fmt.Println("after call func:", strArr) }  func strFuncTest(strArr []string) {    strArr[0] = "test" }

结果:函数中对字符串切片的赋值,会改变原切片的值。

[str1 str2 str3] [test str2 str3]

结论:函数参数的传递是深拷贝

以上
Just do IT!

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » golang字符串切片的赋值

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址