golang에서 [] string과… string의 차이점은 무엇입니까?
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...)
이 구문은 리터럴 구문을 사용하여 빌드 된 슬라이스 또는 가변 매개 변수를 나타내는 슬라이스 (실제로 둘 사이에 차이가 없기 때문에)에 사용할 수 있습니다.
http://play.golang.org/p/QWmzgIWpF8
둘 다 문자열 배열을 생성하지만 차이점은 호출 방법에 있습니다.
func f(args ...string) {
}
// Would be called like this:
f("foo","bar","baz");
이를 통해 가변 개수의 인수 (모두 동일한 유형)를 허용 할 수 있습니다.
이것의 좋은 예는 fmt.Print당신이 원하는만큼의 arugments를받을 수있는 친구들과입니다.
원하는 것은 다음과 같습니다.
var args []string = []string{"A", "B", "C"}
func Sample(args ...string) {
for _, arg := range args {
fmt.Println(arg)
}
}
func main() {
Sample(args...)
}
플레이 : http://play.golang.org/p/N1ciDUKfG1
함수 매개 변수를 단순화합니다. 다음은 예제입니다 ( 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 : []
'Program Club' 카테고리의 다른 글
| ZeroMQ, RabbitMQ 및 Apache Qpid의 성능 비교 (0) | 2020.10.16 |
|---|---|
| 텍스트 상자의 데이터를 Flask로 보내시겠습니까? (0) | 2020.10.16 |
| 노드에서 모든 자식 요소를 제거한 다음 다른 색상과 크기로 다시 적용하려면 어떻게해야합니까? (0) | 2020.10.16 |
| 이 C ++ 프로그램이 그렇게 빠른 이유는 무엇입니까? (0) | 2020.10.16 |
| Dataframe 셀 내부의 목록을 별도의 행으로 분해하는 방법 (0) | 2020.10.16 |