golang 中的 []string 和 ...string 有什么区别?
技术问答
189 人阅读
|
0 人回复
|
2023-09-11
|
在 Go 语言中,
1 p C& C' c& {! f- i0 @[]string 是字符串数组
e0 | G" r% W: P我们也...string用作参数。
& y7 A0 a8 R0 j( X- `# M' ^有什么区别?" q( W- r+ D0 m
函数定义:/ K* M7 t/ ]) N
func f(args ...string) {}
! _, g5 R( E {, P( Q4 `6 E4 N/ g; b0 f! \ 我能像下面这样调用这个函数吗?# `7 P& z8 z6 H6 I0 Q4 H
args := []string{"a","b"}f(args)
: x: H1 Z$ {6 {- J. w9 B- a+ L % e+ \2 z) J9 n0 g4 Y
解决方案:
2 o0 _, D7 o0 l7 o) J+ ? []string 是字符串数组
, _! Y/ O# `- k# k$ v从技术上讲,它是引用底层数组的切片$ m9 \ A) Z* T+ X; k+ W; t
我们也...string用作参数。
* \7 A& z' v( N- W! u) o有什么区别?
/ a. m3 `3 T- |6 h6 n+ ?5 d至于结构,真的没什么。两种语法产生相同类型的数据。
/ h. D; E- \7 p. `该...参数语法形成可变参数参数。它将接受零或多个string并引用它们作为切片。
' _$ B/ T4 h- U5 f* Y) x4 R关于调用f,您可以使用以下语法将字符串传输到可变参数中:9 t: A9 [. v# Z; F' w& Q
func f(args ...string) fmt.Println(len(args))}args := []string{"a","b"}f(args...)
4 r- F8 {2 a# } [( l 该语法可用于使用文本语法构建的切片,或表示可变参数的切片(因为它们之间没有区别)。 |
|
|
|
|
|