回答

收藏

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

本版积分规则