(Go : basic) 7. 배열

Posted by : at

Category : Go


배열

//자료형 : 배열(1)
package main

import "fmt"

func main() {
	//배열
	//배열은 용량, 길이 항상 같다.
	//배열 vs 슬라이스 차이점 중요
	//길이 고정 						   vs 길이 가변
	//값 타입 								  vs 참조 타입
	//복사 전달 							 vs  참조 값 전달
	//전체 비교연산자 사용 가능 vs 비교 연산자 사용 불가
	//대 부분 슬라이스 사용한다.

	//cap() : 배열, 슬라이스 용량
	//len() : 배열, 슬라이스 개수

	//예제1
	var arr1 [5]int
	var arr2 [5]int = [5]int{1, 2, 3, 4, 5}
	var arr3 = [5]int{1, 2, 3, 4, 5}
	arr4 := [5]int{1, 2, 3, 4, 5}
	arr5 := [5]int{1, 2, 3} //기본 0 초기화
	arr6 := [...]int{1, 2, 3, 4, 5}
	arr7 := [5][5]int{
		{1, 2, 3, 4, 5},
		{6, 7, 8, 9, 10}, //콤마 주의
	}

	arr1[2] = 5 //값 삽입

	fmt.Printf("%-5T %d %v\n", arr1, len(arr1), arr1)
	fmt.Printf("%-5T %d %v\n", arr2, len(arr2), arr2)
	fmt.Printf("%-5T %d %v\n", arr3, len(arr3), arr3)
	fmt.Printf("%-5T %d %v\n", arr4, len(arr4), arr4)
	fmt.Printf("%-5T %d %v\n", arr5, len(arr5), arr5)
	fmt.Printf("%-5T %d %v\n", arr6, len(arr6), arr6)
	fmt.Printf("%-5T %d %v\n", arr7, len(arr7), arr7)

	//예제2
	arr8 := [5]int{1, 2, 3, 4, 5}
	arr9 := [5]int{ //여러 줄 선언 콤마 주의
		1,
		2,
		3,
		4,
		5,
	}
	arr10 := [...]string{"Kim", "Lee", "Park"}

	fmt.Printf("%-5T %d %v\n", arr8, len(arr8), arr8)
	fmt.Printf("%-5T %d %v\n", arr9, len(arr9), arr9)
	fmt.Printf("%-5T %d %v\n", arr10, len(arr10), arr10)
}

배열 순회

package main

import "fmt"

func main() {
	//배열 순회

	//예제1
	arr1 := [5]int{1, 10, 100, 1000, 10000}

	//len 길이 반복
	for i := 0; i < len(arr1); i++ {
		fmt.Println("ex1 : ", arr1[i])
	}
	fmt.Println() //줄 바꿈

	//예제2
	arr2 := [5]int{1, 10, 100, 1000, 10000}

	//range 사용
	for i, v := range arr2 {
		fmt.Println("ex2 : ", i, v)
	}
	fmt.Println()

	//인덱스 생략1
	for _, v := range arr2 {
		fmt.Println("ex3 : ", v)
	}

	//인덱스 생략2
	fmt.Println()
	for v := range arr2 {
		fmt.Println("ex4 : ", v)
	}
}

복사

//자료형 : 배열(3)
package main

import "fmt"

func main() {
	//배열 복사
	//값 복사 확인 중요

	//예제1
	arr1 := [5]int{1, 10, 100, 1000, 10000}
	arr2 := arr1

	fmt.Println("ex1 : ", arr1, &arr1)
	fmt.Println("ex1 : ", arr2, &arr2)
	fmt.Printf("ex1: %p %v\n", &arr1, arr1) //주소 값 출력
	fmt.Printf("ex1: %p %v\n", &arr2, arr2) //주소 값 출력
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links