golang 中的 []string 和 ...string 有什么区别?
技术问答
331 人阅读
|
0 人回复
|
2023-09-11
|
在 Go 语言中,
2 z) H+ y# _$ ~. G4 Z[]string 是字符串数组+ F9 Z2 Y( X- U2 u) e
我们也...string用作参数。
! Q7 u5 p6 @" A% {4 P有什么区别?
" a5 t: j: C$ {7 `函数定义:
' H% g% @% }! L2 R3 j+ Kfunc f(args ...string) {}
$ q; v3 S8 r2 Y$ z. m' E4 ` 我能像下面这样调用这个函数吗?4 M! z8 S. w$ I( \1 r
args := []string{"a","b"}f(args)- j+ ~" o" u1 z+ k
2 X+ l: o% {) n4 |& J3 a' {6 ^( E 解决方案:
" s; _! g9 X9 @& F []string 是字符串数组0 B1 x( F/ b) w+ w9 Q, k# o) J
从技术上讲,它是引用底层数组的切片+ z4 I# t% w* a _
我们也...string用作参数。9 i+ j2 P$ ?) e2 j" q# ?. S/ P
有什么区别?6 s; _2 P% H8 [ z. x( ^( F
至于结构,真的没什么。两种语法产生相同类型的数据。
9 m0 I' w* K# f- d该...参数语法形成可变参数参数。它将接受零或多个string并引用它们作为切片。
3 N6 t& e7 u2 E0 X# ~/ i6 C7 ~关于调用f,您可以使用以下语法将字符串传输到可变参数中:
/ {5 ]4 _. t, s4 _1 vfunc f(args ...string) fmt.Println(len(args))}args := []string{"a","b"}f(args...)) c. X% Z1 K* k' L! z3 X
该语法可用于使用文本语法构建的切片,或表示可变参数的切片(因为它们之间没有区别)。 |
|
|
|
|
|