回答

收藏

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

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

在 Go 语言中,
) X$ @& Q4 ^/ z4 U% \# A9 N4 L[]string 是字符串数组
1 P. \' j1 v2 W! ~% b5 g8 E0 i- x' F我们也...string用作参数。
7 F1 d# P; ?! ]; ?/ b$ y* u/ F3 r有什么区别?
# `; y% q4 [" R函数定义:+ d# ?/ p0 d2 O
    func f(args ...string) {}1 z: Q  w; x9 C6 Q( b; u/ ^
我能像下面这样调用这个函数吗?7 Q7 G% c3 ?$ g! y, H1 E: W# a
    args := []string{"a","b"}f(args)2 W, y# e/ n% J
               ; _- S1 D  y* k# k8 }
    解决方案:                                                                ' R# r6 Z/ O4 m1 D
                                                                []string 是字符串数组
/ ?+ x" c7 w) H: Q" l% s) [从技术上讲,它是引用底层数组的切片3 r- a7 I  f+ R3 Z6 Y+ d
我们也...string用作参数。; @5 Y, b8 J' S$ ~, c
有什么区别?3 A( P1 C' f/ H7 B& h
至于结构,真的没什么。两种语法产生相同类型的数据。; @/ [: s% G8 u! j1 J
该...参数语法形成可变参数参数。它将接受零或多个string并引用它们作为切片。) A0 p, u& W+ h( N! F: j
关于调用f,您可以使用以下语法将字符串传输到可变参数中:
) C( g% ]3 q# Y9 x3 j. e5 ^
    func f(args ...string)    fmt.Println(len(args))}args := []string{"a","b"}f(args...)2 r( Q3 f! T) V4 h0 x# {  `
该语法可用于使用文本语法构建的切片,或表示可变参数的切片(因为它们之间没有区别)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则