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# { `
该语法可用于使用文本语法构建的切片,或表示可变参数的切片(因为它们之间没有区别)。 |
|
|
|
|
|