回答

收藏

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 L
    func 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
该语法可用于使用文本语法构建的切片,或表示可变参数的切片(因为它们之间没有区别)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则