Go 언어에서는
[]string
문자열 배열입니다.
...string
매개 변수로 도 사용 합니다.
차이점은 무엇입니까?
기능 정의 :
func f(args ...string) {}
이 함수를 아래와 같이 호출 할 수 있습니까?
args := []string{"a", "b"}
f(args)
Go 언어에서는
[]string
문자열 배열입니다.
...string
매개 변수로 도 사용 합니다.
차이점은 무엇입니까?
기능 정의 :
func f(args ...string) {}
이 함수를 아래와 같이 호출 할 수 있습니까?
args := []string{"a", "b"}
f(args)
답변:
[]string
문자열 배열입니다.
기술적으로는 기본 배열을 참조하는 슬라이스입니다.
...string
매개 변수로 도 사용 합니다.차이점은 무엇입니까?
구조와 관련하여 실제로는 없습니다. 두 구문의 결과 데이터 유형은 동일합니다.
...
매개 변수 구문은 가변 매개 변수를합니다. 0 개 이상의 string
인수를 허용 하고이를 슬라이스로 참조합니다.
호출과 관련 f
하여 다음 구문을 사용하여 문자열 조각을 variadic 매개 변수에 전달할 수 있습니다.
func f(args ...string) {
fmt.Println(len(args))
}
args := []string{"a", "b"}
f(args...)
이 구문은 리터럴 구문을 사용하여 빌드 된 슬라이스 또는 가변 매개 변수를 나타내는 슬라이스 (실제로 서로 차이가 없기 때문에)에 사용할 수 있습니다.
[]string
구문을 사용하여 생성 된 슬라이스 간의 차이에 대한 질문에 대한 대답입니다 . 더 명확하게 대답하기 위해 더 많은 인용문을 추가하겠습니다. :-)
둘 다 문자열 배열을 생성하지만 차이점은 호출 방법에 있습니다.
func f(args ...string) {
}
// Would be called like this:
f("foo","bar","baz");
이를 통해 가변 개수의 인수 (모두 동일한 유형)를 허용 할 수 있습니다.
이것의 좋은 예는 fmt.Print
당신이 원하는만큼 적게 또는 많은 arugments를 받아 들일 수있는 친구들과입니다.
def fn(*args)
구조와 거의 동일합니다 .
원하는 것은 다음과 같습니다.
var args []string = []string{"A", "B", "C"}
func Sample(args ...string) {
for _, arg := range args {
fmt.Println(arg)
}
}
func main() {
Sample(args...)
}
함수 매개 변수를 단순화합니다. 다음은 예제입니다 ( https://play.golang.org/p/euMuy6IvaM ) : SampleEllipsis 메소드는 0부터 동일한 유형의 여러 매개 변수를 허용하지만 SampleArray 메소드에서는 선언 할 필수 인수 입니다.
package main
import "fmt"
func SampleEllipsis(args ...string) {
fmt.Printf("Sample ellipsis : %+v\n",args)
}
func SampleArray(args []string) {
fmt.Println("Sample array ")
SampleEllipsis(args...)
}
func main() {
// Method one
SampleEllipsis([]string{"A", "B", "C"}...)
// Method two
SampleEllipsis("A", "B", "C")
// Method three
SampleEllipsis()
// Simple array
SampleArray([]string{"A", "B", "C"})
// Simple array
SampleArray([]string{})
}
반환 :
Sample ellipsis : [A B C]
Sample ellipsis : [A B C]
Sample ellipsis : []
Sample array
Sample ellipsis : [A B C]
Sample array
Sample ellipsis : []
[]string
배열이 아니라 슬라이스입니다. 배열과 슬라이스의 차이점은 미묘하지만 중요합니다.