Go에서 []String과 ...String의 차이점

Jay Singh 2023년1월30일
  1. Go에서 []string을 사용하여 슬라이스 정의
  2. Go에서 ...string을 사용하여 가변 함수 정의
  3. Go에서 []string...string 모두 사용
Go에서 []String과 ...String의 차이점

배열 섹션을 슬라이스라고 합니다. 슬라이스는 어레이보다 더 많은 기능, 유연성 및 편의성을 제공합니다.

슬라이스는 인덱싱이 가능하며 배열과 마찬가지로 길이가 있습니다. 배열과 달리 확장할 ​​수 있습니다.

슬라이스는 배열의 연속 섹션을 정의하고 슬라이스 변수와 별도로 유지되는 데이터 구조입니다.

배열은 슬라이스와 다릅니다. 배열의 조각은 배열의 하위 집합입니다.

이 기사에서는 Go에서 []string...string의 차이점에 대해 설명합니다.

Go에서 []string을 사용하여 슬라이스 정의

이 예에서 forrange 명령을 사용하여 단어 세트를 반복했습니다.

package main

import "fmt"

func main() {
    words := []string{"Iron Man", "Thor", "Hulk", "Dr Strange", "Spiderman"}
    for idx, word := range words {
        fmt.Println(idx, word)
    }
}

출력:

0 Iron Man
1 Thor
2 Hulk
3 Dr Strange
4 Spiderman

Go에서 ...string을 사용하여 가변 함수 정의

매개변수 앞의 줄임표(...)는 가변 함수를 정의합니다. 함수에 제공되는 Avengers 이름에 응답하는 프로그램을 만들어 보겠습니다.

하나의 매개변수 name을 허용하는 sayHello 메소드를 설계했습니다. 데이터 유형 ...string 앞에 줄임표(...)를 추가했으므로 인수는 변수입니다.

Go는 함수가 0개, 1개 또는 많은 매개변수를 취할 수 있음을 이해합니다.

names 매개변수는 sayHello 메소드에 슬라이스로 전송됩니다. 데이터 유형이 문자열이기 때문에 names 매개변수는 문자열 조각([]string)처럼 메서드 본문 내에서 처리될 수 있습니다.

range 연산자를 사용하여 문자열 조각을 반복하는 루프를 만들 수 있습니다.

package main

import "fmt"

func main() {
    sayHello()
    sayHello("Iron Man")
    sayHello("Thor", "Hulk", "Dr Strange", "Spiderman")
}

func sayHello(names ...string) {
    for _, n := range names {
        fmt.Printf("Hello %s\n", n)
}

출력:

Hello Iron Man
Hello Thor
Hello Hulk
Hello Dr Strange
Hello Spiderman

Go에서 []string...string 모두 사용

package main

import "fmt"

func f(args ...string) {
    fmt.Println(len(args))
    for i, s := range args {
        fmt.Println(i, s)
    }
}

func main() {
    args := []string{"Hello", "Jay"}
    f(args...)
}

출력:

2
0 Hello
1 Jay

관련 문장 - Go Slice

관련 문장 - Go Variadic