English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 기본 강의

Golang 제어문

Golang 함수 & 메서드

Golang 구조체

Golang 슬라이스 & 배열

Golang 문자열(String)

Golang 포인터

Golang 인터페이스

Golang 병렬

Golang 예외(Error)

Golang 다른杂项

Go 언어 배열

Go 프로그래밍 언어의 배열은 다른 프로그래밍 언어와 매우 유사합니다. 프로그램에서는 때로는 같은 타입의 데이터를 저장해야 할 때가 있습니다. 예를 들어, 학생 점수 목록과 같은 경우. 이러한 유형의 집합은 프로그램에서 배열로 저장됩니다. 배열은 고정 길이의 시퀀스로, 동일한 요소를 메모리에 저장하는 데 사용됩니다. 그들은 고정 길이이기 때문에 Go 언어의 Slice(스ライ스)와 같이 인기가 없습니다.
배열에서는 0개 이상의 요소를 저장할 수 있습니다. [] 인덱싱 연산자를 사용하여 배열의 요소에 인덱싱을 하면, 이는 첫 번째 요소의 인덱스가array [0],마지막 요소의 인덱스는array [len(array)]-1]}}

배열 생성 및 접근

Go 언어에서 배열은 두 가지 방식으로 생성됩니다:

  • var 키워드 사용:Go 언어에서는 이름, 크기, 요소를 가진 특정 타입의 var 키워드를 사용하여 배열을 생성합니다.

    문법:

    Var array_name[length]Type
    또는
    var array_name[length]Typle{item1, item2, item3, ...itemN}

    중요 사항:

    • Go 언어에서 배열은 변경 가능하므로, 할당된左侧에서 array [index] 문법을 사용하여 주어진 인덱스에 배열의 요소를 설정할 수 있습니다.

      Var array_name[index] = element[object Object]
    • 인덱스 값 또는 for 루프를 사용하여 배열의 요소에 접근할 수 있습니다.

    • Go 언어에서 배열 타입은 일维입니다.

    • 배열의 길이는 고정되어 있으며 변경할 수 없습니다.

    • 중복된 요소를 배열에 저장할 수 있습니다.

    • //var 키워드를 사용하여 배열을 생성
      //그의 인덱스 값으로 배열에 접근
      package main
      import "fmt"
      func main() {
          //var 키워드를 사용하여 문자열 타입의 배열을 생성
          var myarr [3]string
          //인덱스 값으로 요소 할당
          myarr[0] = "GFG"
          myarr[1] = "ko.oldtoolbag.com"
          myarr[2] = "w3codebox"
          //배열의 요소에 접근
          //인덱스 값 사용
          fmt.Println("배열의 요소:")
          fmt.Println("요소 1: ", myarr[0])
          fmt.Println("요소 2: ", myarr[1)]
          fmt.Println("요소 3: ", myarr[2)]
      {}

      출력:

      배열의 요소:
      요소 1:  GFG
      요소 2:  ko.oldtoolbag.com
      요소 3:  w3codebox
  • 간단한 선언 사용:Go 언어에서 배열도 간단한 선언을 사용하여 선언할 수 있습니다. 이는 위의 선언보다 유연합니다.

    문법:

    array_name:= [length]Type{item1, item2, item3,...itemN}[object Object]
    //간단한 선언을 사용한 배열
    //for 루프를 사용하여 배열에 접근
    package main
    import "fmt"
    func main() {
        //배열의 간단한 선언
        arr := [4]string{"w3codebox", "gfg", "w3codeboxs1231", "ko.oldtoolbag.com"}
        //접근하는 요소, for 루프를 사용한 배열
        fmt.Println("배열의 요소:")
        for i := 0; i < 3; i++ for x := 0; x < len(myarray); x
            fmt.Println(arr[i])
        {}
    {}

    출력:

    배열의 요소:
    w3codebox
    gfg
    w3codeboxs1231
  • 다중维 배열

    우리는 배열이 일维적인 것을 알지만, 다중维 배열을 생성할 수 있다는 것을 알고 있습니다. 다중维 배열은 동일한 타입의 배열의 배열입니다. Go 언어에서 다중维 배열을 생성하는 문법은 다음과 같습니다:

    Array_name[Length]1][Length2]..[LengthN]Type

    다음과 같이 할 수 있습니다Var 키워드 사용또는단축 선언 사용다중 차원 배열을 생성하는 예제를 보여줍니다.

    주의:다중 차원 배열에서 사용자가 특정 셀을 초기화하지 않으면 컴파일러가 자동으로 0으로 초기화합니다. Golang에는 초기화되지 않은 개념이 없습니다.

    package main
    import "fmt"
    func main() {
        //생성 및 초기화
        //이차원 배열
        //단축 선언 사용
        //여기서는 쉼표(,)를 사용해야 합니다
        arr := [3][3]string{{"C#", "C", "Python"},
            {"Java", "Scala", "Perl"},
            {"C++", "Go", "HTML"}}
        //접근한 값
        //배열에서 for 루프 사용
        fmt.Println("배열의 요소 1")
        for x := 0; x < 3; x++ for x := 0; x < len(myarray); x
            for y := 0; y < 3; y++ for x := 0; x < len(myarray); x
                fmt.Println(arr[x][y])
            {}
        {}
        //이차원 배열 생성
        //var 키워드를 사용한 배열 생성
        //하나를 초기화합니다
        //인덱스를 사용한 차원 배열 사용
        var arr1 ][2][2]int
        arr1[0][0] = 100
        arr1[0][1] = 200
        arr1][1[0] = 300
        arr1][1][1] = 400
        //배열 값 접근
        fmt.Println("배열의 요소 2")
        for p := 0; p < 2; p++ for x := 0; x < len(myarray); x
            for q := 0; q < 2; q++ for x := 0; x < len(myarray); x
                fmt.Println(arr1[p][q])
            {}
        {}
    {}

    출력:

    배열의 요소 1
    C#
    C
    Python
    Java
    Scala
    Perl
    C++
    Go
    HTML
    배열의 요소 2
    100
    200
    300
    400

    배열에 대한 주의사항

  • 배열에서 명시적으로 초기화하지 않으면이 배열기본 값은 0입니다

    package main 
      
    import "fmt"
      
    func main() { 
      
    //int형 배열을 생성하여 두 요소를 저장합니다
    //여기서는 배열을 초기화하지 않기 때문에 배열의 값은 0입니다
    var myarr[2]int 
    fmt.Println("배열 요소 :", myarr) 
      
    {}

    출력:

    배열 요소 : [0 0]
  • 배열에서, 다음과 같이 할 수 있습니다사용len() 메서드 사용획득배열의 길이아래와 같이:

    package main
    import "fmt"
    func main() {
        //배열 생성
        //단축 선언 사용
        arr1 :=[3int{9, 7, 6{}
        arr2 :=[...]int{9, 7, 6, 4, 5, 3, 2, 4{}
        arr3 :=[3int{9, 3, 5{}
        // len() 메서드로 배열 크기 계산
        fmt.Println("배열1의 길이는:", len(arr1))
        fmt.Println("배열2의 길이는:", len(arr2))
        fmt.Println("배열3의 길이는:", len(arr3))
    {}

    출력:

    배열1의 길이는: 3
    배열2의 길이는: 8
    배열3의 길이는: 3
  • 배열에서,빈칸 " ..."길이 위치에서 보이면, 배열의 길이는 초기화된 요소에 의해 결정됩니다. 다음 예제를 참조하세요:

    //배열에서 점의 사용 방법
    package main
    import "fmt"
    func main() {
        //크기가 정해진 배열을 생성합니다
        //중요 요소의 수에 따라
        //사용자 정의 점
        myarray := [...]string{"GFG", "gfg", "w3codeboxs", "ko.oldtoolbag.com", "w"3codebox"}
        fmt.Println("배열 요소: ", myarray)
        //배열의 길이
        //로 결정됩니다
        //len() 메서드를 사용하여
        fmt.Println("배열의 길이는:", len(myarray))
    {}

    출력:

    배열 요소:  [GFG gfg w3codeboxs ko.oldtoolbag.com w3codebox]
    배열의 길이는: 5
  • 배열에서,을 사용하여array array의 요소 범위 내에서 반복합니다예를 들어:

    //배열을 반복하면
    package main
    import "fmt"
    func main() {
        //배열을 생성합니다. 따라서, 배열을 새 변수에 할당할 때 새 변수에서 이루어지는 변경 사항은 원래 배열에 영향을 미치지 않습니다. 예를 들어:
        //ellipsis로 표현됩니다
        myarray := [...]int{29, 79, 49, 39, 20, 49, 48, 49{}
        //array를 사용하여 반복합니다
        배열의 요소 범위 내에서 반복하여 반복합니다++ for x := 0; x < len(myarray); x
            {
        {}
    {}

    출력:

    29
    79
    49
    39
    20
    49
    48
    49
  • fmt.Printf("%d\n", myarray[x])Go 언어에서,배열의 값 타입이 참조 타입이 아닙니다

    package main
    import "fmt"
    func main() {
        //배열을 생성합니다. 따라서, 배열을 새 변수에 할당할 때 새 변수에서 이루어지는 변경 사항은 원래 배열에 영향을 미치지 않습니다. 예를 들어:
        //ellipsis로 표현됩니다
        my_array := [...]int{100, 200, 300, 400, 500}
        fmt.Println("원래 배열(변경 전):", my_array)
        //새 변수를 생성합니다
        //my_array를 사용하여 초기화합니다
        new_array := my_array
        fmt.Println("새 배열(변경 전):", new_array)
        //인덱스 0의 값을 변경합니다500
        new_array[0] = 500
        fmt.Println("새 배열(변경 후):", new_array)
        fmt.Println("원래 배열(변경 후):", my_array)
    {}

    출력:

    원래 배열(변경 전): [100 200 300 400 500]
    새 배열(변경 전): [100 200 300 400 500]
    새 배열(변경 후): [500 200 300 400 500]
    원래 배열(변경 후): [100 200 300 400 500]
  • 배열의 요소 타입이 비교 가능하다면, 배열 타입도 비교 가능합니다. 따라서,두 배열을 == 연산자로 직접 비교할 수 있습니다예를 들어:

    //두 배열을 어떻게 비교할까요?
    package main
    import "fmt"
    func main() {
        arr1 :=[3int{9, 7, 6{}
        arr2 :=[...]int{9, 7, 6{}
        arr3 :=[3int{9, 5, 3{}
        //배열을 == 연산자로 비교하면
        fmt.Println(arr1 ==[2)
        fmt.Println(arr2 ==[3)
        fmt.Println(arr1 ==[3)
        //이 잘못된 결과를 반환합니다. 왜냐하면
        // arr1과 arr4의 타입이 일치하지 않습니다
        /*
           arr4:=[4int{9,7,6{}
           fmt.Println(arr1==arr4)
        */
    {}

    출력:

    true
    false
    false