回答

收藏

golang 中的 []string 和 ...string 有什么区别?

技术问答 技术问答 457 人阅读 | 0 人回复 | 2023-09-11

在 Go 语言中,
0 K$ Q% {+ \4 t5 u1 g$ s* ?[]string 是字符串数组8 B: N3 j$ h/ P$ R) Y" i
我们也...string用作参数。
. T% Q8 M( v- d) T2 I1 s/ m有什么区别?* p0 _  ^% n) n( L3 r* o. W( r# _3 p
函数定义:
4 `1 P( o9 s4 g6 X& V
    func f(args ...string) {}% [! u& e. g4 O( }( g( d4 @
我能像下面这样调用这个函数吗?
9 [9 k) \7 O& J1 y6 N
    args := []string{"a","b"}f(args)4 s1 Y0 |: m! A. D9 p  a
               
) e( F  w: i7 _5 x; i& Z* v    解决方案:                                                               
, U4 S- C8 @+ `  M                                                                []string 是字符串数组
6 \9 A7 Y1 E5 y4 q7 u1 [/ ?从技术上讲,它是引用底层数组的切片+ Z3 O: y; `9 Y7 ?& m, J+ c
我们也...string用作参数。# O# P( S5 X  j0 D
有什么区别?
/ K/ w! T. O/ `0 |0 l; z7 D1 A1 M至于结构,真的没什么。两种语法产生相同类型的数据。( Z# _! u( X8 f  v
该...参数语法形成可变参数参数。它将接受零或多个string并引用它们作为切片。
$ p6 ?, g. Y$ ^6 E3 \. b$ M关于调用f,您可以使用以下语法将字符串传输到可变参数中:1 }# o& e1 u4 I1 A3 q
    func f(args ...string)    fmt.Println(len(args))}args := []string{"a","b"}f(args...)0 D2 w3 t8 G! Y5 y6 i" O
该语法可用于使用文本语法构建的切片,或表示可变参数的切片(因为它们之间没有区别)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则