golang 中的 []string 和 ...string 有什么区别?
技术问答
288 人阅读
|
0 人回复
|
2023-09-11
|
在 Go 语言中,; g$ e( c& H6 D; V3 M; e
[]string 是字符串数组
# i* Z0 L5 a- v& z; Q# B我们也...string用作参数。! `7 G9 T4 U( l# L. y
有什么区别?
( [ C2 R& ]" a2 \函数定义:
6 n- x4 A# V8 X- U- e6 m6 Lfunc f(args ...string) {}
: t& F% F2 z& s8 V 我能像下面这样调用这个函数吗?
+ o- L: W! l F5 _8 j }args := []string{"a","b"}f(args)3 ^- }' ~# |6 o+ r; s6 i4 e
/ M! L9 ^8 O2 A: Z ]# ?+ ~' Z
解决方案:
( x, N/ Y7 w _9 y []string 是字符串数组
- @! M/ k! @6 ?4 ]4 S3 t3 p! c从技术上讲,它是引用底层数组的切片0 C% a$ N" y6 d0 z
我们也...string用作参数。0 k2 K/ A: j, g
有什么区别?
2 b* m1 h2 c8 h& j! W& ?1 \. ~至于结构,真的没什么。两种语法产生相同类型的数据。6 O) y/ |7 @) D2 Y! X) L
该...参数语法形成可变参数参数。它将接受零或多个string并引用它们作为切片。5 x- j/ f D0 @1 ~2 J: x- [
关于调用f,您可以使用以下语法将字符串传输到可变参数中:$ g/ }, i( L5 r* W+ Q% ^% I6 W5 @
func f(args ...string) fmt.Println(len(args))}args := []string{"a","b"}f(args...)' D4 O& y. Z3 e4 Z) _6 {3 n
该语法可用于使用文本语法构建的切片,或表示可变参数的切片(因为它们之间没有区别)。 |
|
|
|
|
|