반응형

Go 언어 25

[구글 Go 하자] 37. 슬라이스[start:last]로 부분 슬라이스를 만들 수 있어요.

37. 슬라이스[start:last]로 부분 슬라이스를 만들 수 있어요. 안녕하세요. 언제나 휴일, 언휴예요. 이번에는 원본 슬라이스에서 원하는 영역을 추출하는 부분 슬라이스를 만드는 방법을 알아보아요. 부분 슬라이스를 만들 때는 슬라이스명[시작 인덱스: 끝 인덱스 더하기 일] 표현을 사용하세요. 슬라이스명[시작 인덱스: 끝 인덱스 더하기 일] 주의할 점은 실제 만들어지는 부분 슬라이스 영역은 시작 인덱스에서 끝 인덱스 이전까지만 복사합니다. 다음은 원본 슬라이스에서 원하는 영역을 최종 사용자로부터 입력받아 부분 슬라이스를 만드는 예제 코드예요. //부분 슬라이스 만들기package main import "fmt" func main() { var origin_s []int = []int{10, 23, 3..

[구글 Go 하자] 36. copy 함수를 사용하면 원소 값을 복사할 수 있어요.

36. copy 함수를 사용하면 원소 값을 복사할 수 있어요. 안녕하세요. 언제나 휴일, 언휴예요. 슬라이스에서 대입 연산은 두 개의 변수가 같은 개체를 참조하는 것이었죠. 만약 배열의 대입 연산과 비슷하고 다른 배열의 원소 값을 복사하려면 copy 함수를 사용하세요. 주의할 점은 copy 함수로 복사하면 원소 값이 있던 곳은 복사합니다. 예를 들어 슬라이스 s1은 용량이 10이고 원소 값이 1부터 10으로 초기 설정한 상태라고 가정해요. 그리고 s2는 용량이 5이고 원소 값은 8과 9로 원소 개수가 2라고 가정 하죠. 이 때 copy(s2, s1) 호출하면 s2의 원소 개수 두 개(1과 2)만 복사합니다. 당연히 용량이 부족하다고 늘려주지 않겠죠. 다음은 용량이 10인 s1과 용량이 5인 s2인 슬라이..

[구글 Go 하자] 35. 배열의 대입 연산은 값 복사, 슬라이스는 참조

[구글 Go 하자] 35. 배열의 대입 연산은 값 복사, 슬라이스는 참조 안녕하세요. 언제나 휴일, 언휴예요. 이번에는 배열과 슬라이스의 차이점 중에 개발자가 실수하기 쉬운 대입 연산을 알아보기로 해요. 선언할 때와 인덱스 연산으로 원소에 접근하는 것은 배열과 슬라이스의 공통점이예요. 그런데 대입 연산에서는 차이가 있어요. 배열끼리 대입 연산을 하면 원소 값을 모두 복사합니다. 하지만 슬라이스는 내부적으로 참조 형식이어서 같은 개체를 참조할 뿐이예요. 예를 들어 배열 arr1에 1, 2, 3 값의 원소를 갖고 있을 때 arr2에 대입하면 arr2 배열도 1, 2, 3 값을 갖는 상태로 변해요. 이 때 arr2[0]=8 연산을 수행하면 arr2는 예상처럼 원소 값은 8, 2, 3으로 변해요. 하지만 arr..

[구글 Go 하자] 34.슬라이스도 초기 값을 설정할 수 있어요.

[구글 Go 하자] 34.슬라이스도 초기 값을 설정할 수 있어요. 안녕하세요. 언제나 휴일, 언휴예요. 슬라이스도 생성하면서 값을 초기 설정할 수 있어요. 이 때는 원소 개수를 명시하지 않다는 점 빼고는 배열 초기화와 같아요. var name[] type = []type{값 목록} 이전 예제에서는 5명의 학생 성적을 배열에 갖고 있는 상태에서 출발했었죠. 이번에는 슬라이스를 선언하면서 5명의 학생 성적으로 초기값을 설정한 상태에서 나머지 5명의 성적을 최종 사용자로부터 입력받는 예제 코드예요. // 슬라이스 초기화 후에 성적 입력package main import "fmt" func main() { var scores []int = []int{90, 88, 76, 80, 99} var i int fmt...

[구글 Go 하자] 33. 슬라이스가 꽉 찰 때 append 함수를 사용하면 알아서 늘려줘요.

33. 슬라이스가 꽉 찰 때 append 함수를 사용하면 알아서 늘려줘요. 안녕하세요. 언제나 휴일, 언휴예요. 앞에서 슬라이스의 저장소 용량은 동적이라고 말했어요. 그런데 좀 더 정확히 말하면 저장소의 용량은 자동으로 확장하는 제법 똑똑한 컬렉션이예요. 만약 꽉 차 있는 상태의 슬라이스에 append 함수를 이용하여 자료를 추가하면 저장소의 용량은 알아서 늘려줘요. 현재 용량이 0이면 1로 늘려주고 그 외에는 현재 용량의 두 배로 늘어나요. 다음의 예제 코드는 이를 확인하는 간단한 코드예요. //슬라이스가 꽉 찰 때 append 함수 사용package main import "fmt" func main() { var s []int fmt.Printf("용량:%d 원소 개수:%d\n", cap(s), le..

[구글 Go 하자] 30. 배열의 요소를 순차적으로 방문하기

30. 배열의 요소를 순차적으로 방문하기 안녕하세요. 언제나 휴일입니다. 이전 게시글에서는 배열을 선언하는 방법을 살펴보았죠. 이번 게시글에서는 배열의 요소를 순차적으로 방문하는 방법을 알아보기로 합시다.배열의 요소를 순차적으로 방문하는 방법 중에 배열의 원소 개수를 구한 후에 인덱스를 이용하여 순차적으로 방문하는 방법이 있습니다. 이전 게시글에서 소개했듯이 배열의 원소 개수를 구할 때는 len 함수를 사용합니다. len(배열명) 다음처럼 배열 이름을 len 함수에 입력 인자로 전달하면 배열의 원소 개수를 얻어올 수 있습니다. arr := [5]int{12, 34, 23, 56, 34}var length intlength = len(arr) 그리고 인덱스를 0에서 length보다 작으면 반복하여 각 원소..

[구글 Go 하자] 29. 구글 Go 언어, 배열 기초

29. 구글 Go 언어, 배열 기초 안녕하세요. 언제나 휴일입니다. 이번에는 Go 언어의 배열에 관해 알아볼게요. Go언어의 배열은 같은 종류의 고정 개수의 데이터를 하나의 이름으로 관리하는 형식입니다.Go언어에서 배열을 선언할 때 원소 형식과 원소 개수를 지정하여 배열을 선언하거나 원소들의 초기값을 지정하여 선언할 수 있습니다.먼저 원소 형식과 원소 개수를 지정하여 배열을 선언하는 방법입니다.var 배열명 [원소개수] 원소 형식 다음은 int 형식의 3개의 원소를 관리할 수 있는 배열 scores를 선언한 예제 코드입니다. 배열에서 원소의 개수를 알고 싶을 때는 len(배열 이름)을 사용합니다. // Example 배열 기초package main import "fmt" func main() { var ..

[구글 Go 하자] 28. 구글 Go 언어 선택문은 switch

28. 구글 Go 언어 선택문은 switch 안녕하세요. 언제나 휴일입니다.이번에는 변수 값에 따라 특정 코드를 선택해서 수행하는 swith 선택문을 알아볼게요.switch 선택문은 switch 키워드 뒤에 태그나 표현 식을 사용하거나 case에 특정 표현을 사용하는 세 가지 방법으로 생각할 수 있어요.먼저 switch 키워드 뒤에 태그를 사용하는 방법을 살펴볼게요. switch tag{case 상수1: 수행 구문case 상수2: 수행 구문default: 수행 구문} switch 뒤에 태그 표현의 값이 특정 case에 표현한 상수 값이면 해당 수행 구문을 동작하고 그렇지 않을 때는 default의 수행 구문을 동작합니다. 다음은 정수를 입력받아서 0에서 4사이의 정수를 입력하면 한글로 해당 숫자를 출력하..

[구글 Go 하자] 27. Go 언어 반복문은 for 문, 반복문 탈출은 break

27. Go 언어 반복문은 for문, 반복문 탈출은 break 안녕하세요. 언제나 휴일입니다.이번에는 Go언어의 반복문을 알아볼게요. Go언어에서 제공하는 반복문은 for 문이예요. while 문이나 do while 문을 제공하지 않습니다. for 초기식; 조건식;조건 변화식{반복 수행할 구문} 프로젝트를 생성하여 1부터 100까지 정수의 합계를 계산하는 코드를 표현해 보아요. // Example 반복문(1부터 100까지 정수 합계 구하기)package main import "fmt" func main() { var sum = 0 for i := 1; i 100 { break } i++ } fmt.Println("1에서 ", i, " 까지 더하면 처음으로 100이 넘어요.") fmt.Println("합계..

[구글 Go 하자] 26. 엄격한 폼을 요구하는 if 조건문

26. 엄격한 폼을 요구하는 if 조건문 안녕하세요. 언제나 휴일입니다.이전 게시글에서는 콘솔에서의 입출력을 다뤘습니다. 이번 게시글부터 제어문을 다룰 거예요. Go언어의 제어문에는 조건문, 선택문, 반복문, 분기문이 있어요. 이번 게시글에서는 조건문을 다룹니다.Go언어에서는 조건문을 작성할 때 괄호를 생략하는 것을 허용하지 않고 괄호를 붙는 위치와 else가 있어야 하는 위치가 정해져 있습니다. C언어에서 개발자에 따라 다양한 코딩 습관에 따라 괄호가 붙는 위치나 else를 작성하는 위치가 다르게 작성할 수 있었던 것을 엄격하게 한정하고 있습니다.이처럼 엄격하게 정한 것은 개발자들의 코딩 습관에 따라 다르게 작성하여 가독할 때 서로 불편할 수 있는 여지를 미리 차단하는 효과를 줍니다. 먼저 if 조건문..

반응형