回答

收藏

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

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

在 Go 语言中,
2 z) H+ y# _$ ~. G4 Z[]string 是字符串数组+ F9 Z2 Y( X- U2 u) e
我们也...string用作参数。
! Q7 u5 p6 @" A% {4 P有什么区别?
" a5 t: j: C$ {7 `函数定义:
' H% g% @% }! L2 R3 j+ K
    func f(args ...string) {}
    $ q; v3 S8 r2 Y$ z. m' E4 `
我能像下面这样调用这个函数吗?4 M! z8 S. w$ I( \1 r
    args := []string{"a","b"}f(args)- j+ ~" o" u1 z+ k
               
2 X+ l: o% {) n4 |& J3 a' {6 ^( E    解决方案:                                                               
" s; _! g9 X9 @& F                                                                []string 是字符串数组0 B1 x( F/ b) w+ w9 Q, k# o) J
从技术上讲,它是引用底层数组的切片+ z4 I# t% w* a  _
我们也...string用作参数。9 i+ j2 P$ ?) e2 j" q# ?. S/ P
有什么区别?6 s; _2 P% H8 [  z. x( ^( F
至于结构,真的没什么。两种语法产生相同类型的数据。
9 m0 I' w* K# f- d该...参数语法形成可变参数参数。它将接受零或多个string并引用它们作为切片。
3 N6 t& e7 u2 E0 X# ~/ i6 C7 ~关于调用f,您可以使用以下语法将字符串传输到可变参数中:
/ {5 ]4 _. t, s4 _1 v
    func f(args ...string)    fmt.Println(len(args))}args := []string{"a","b"}f(args...)) c. X% Z1 K* k' L! z3 X
该语法可用于使用文本语法构建的切片,或表示可变参数的切片(因为它们之间没有区别)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则