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