본문 바로가기

전체 글

(25)
기술 공유의 가치 기술 공유 전략은 IT 기업들의 핵심 가치를 드러냄과 동시에 나아가야할 방향으로 자리잡고 있습니다. 왜 많은 기업들은 기술을 소유하지 않고 '공유'하는 전략으로 가는 것일까요? 그 이유는 기술을 공유함으로써 다양한 산업에 자사의 기술을 사용하게 하여 플랫폼을 선점할 수 있기 때문입니다. 따라서 수 많은 기업들은 이미 기술 공유를 기반으로 자사의 가치 창출까지 이어질 수 있었습니다. 이러한 전략은 기업에만 국한되지 않는다고 생각합니다. 즉 기업뿐만 아니라, 개인에게 있어서도 공유의 가치는 앞으로도 더욱 중요하게 자리잡게 될 것입니다. 저 또한 이러한 시대적 흐름에 맞춰 저 자신과 앞으로 동료가 될지도 모를 개발자들과 함께 가치를 높이고 싶다는 생각으로, "Step By Step, IT TechShare"란..
Go 언어에서의 map의 기본적인 구조를 설명하겠습니다. map을 선언하는 방법은 아래와 같습니다. var devhsops1 map[string]int devhsops1 = make(map[string]int) // 맵 생성 devhsops2 := make(map[string]int) // 빈 맵 생성 devhsops3 := map[string]int{} // 빈 맵 생성 devhsops4 := map[string]int{"a":1, "b":2, "c":3} // 맵 초기화 이처럼 map은 슬라이스와 마찬가지로 값이 자동으로 생성되지 않기 때문에 make 함수를 이용해 직접 생성해주어야합니다. map에서 할당된 값과 zero 값 구분 방법 devhsops4["a"] : 1이 할당된 값 devhsops4[..
슬라이스 Go의 슬라이스는 값을 추가하여 확장할 수 있는 데이터 구조입니다. 배열과 동일하게 슬라이스는 동일한 Type을 가지는 값들로 구성되어 있습니다. 이때, 슬라이스는 배열과는 다르게 끝부분에 값을 추가할 수 있는 함수를 가지고 있다는 것입니다. 슬라이스 변수 선언 방법 var devhsops1 [5]int var devhsops2 []int devhsops1은 배열과 동일하게 크기를 지정하여 변수를 선언하는 방법입니다. devhsops2는 크기를 지정하지 않고 변수를 선언하는 방법입니다. 크기를 지정하지 않고 변수를 선언하는 경우엔, 슬라이스는 배열과는 다르게 크기를 동적으로 지정해야합니다. devhsops2 = make([]int, 5) 단축 변수 선언과 함께 사용하게 되면 더욱 간단하게 코드로 구현할 ..
텍스트 파일 읽기 앞전에 배열과 각 요소들에 접근하는 방법에 대해 설명드렸는데요 https://devhsops.tistory.com/14 배열 배열이란 무엇일까요? 배열이란, 연관된 데이터를 그룹핑하여 관리하기 위해 사용되는 데이터 타입입니다. 또한, 배열은 동일한 타입을 갖는 값의 모음으로, 데이터를 효율적으로 관리 및 이용 devhsops.tistory.com 배열만이 아닌, 텍스트 파일을 배열과 동일하게 동작하는 방법에 대해 설명드리고자 합니다. 만약 아래와 같은 data.txt 파일에 존재하는 값들을 읽어오고 싶다면 어떻게 해야할까요? 1 2 3 기본적인 포맷은 이전에 설명드렸던 os 패키지를 이용하는 방법과 비슷합니다. https://devhsops.tistory.com/8 Up Down Counting Game..
배열 배열이란 무엇일까요? 배열이란, 연관된 데이터를 그룹핑하여 관리하기 위해 사용되는 데이터 타입입니다. 또한, 배열은 동일한 타입을 갖는 값의 모음으로, 데이터를 효율적으로 관리 및 이용할 수 있습니다. 이번 카테고리에서는 Go에 내장되어 있는 데이터를 관리하는 자료구조를 살펴보겠습니다. Array Slice map Go 언어 배열의 기본적인 포맷 구조는 다음과 같습니다. var devhsops1 [5]int var devhsops2 [5]int = [5]int{1,2,3,4,5} devhsops3 := [5]int{1,2,3,4,5} devhsops4 := [5]int{ 1, 2, 3, 4, 5, } devhsops1은 배열을 선언하는 방법입니다. 이와 같이 선언하게 되면 5개의 int type을 가지는..
패키지 만들기 Package를 만듦으로써 어떠한 이점을 얻을 수 있을까요? 프로그램이 복잡해지고 커질수록 가독성은 점차 안좋아질 수 있습니다. Package를 만듦으로써 코드의 가독성을 높일 수 있습니다. 연관된 코드들을 한 곳에 모아 사용하기에 생산성에 이점이 있습니다. 프로그램뿐만 아니라, 다른 개발자들과 함께 코드를 쉽게 공유할 수 있습니다. 이와 같은 이점이 존재하기 때문에 패키지를 만드는 것을 알 필요가 있습니다. 따라서, 해당 카테고리에서는 패키지를 어떻게 만드는지에 대해 말씀드리고자 합니다. 패키지 Code는 Go WorkSpace 디렉토리에 위치합니다. src에서 각 패키지 코드는 하위 디렉토리에 위치합니다. 각 하위 디렉토리의 파일명은 보통 패키지 이름과 동일하게 지정합니다. 해당 내용을 숙지하고 이제..
Golang User Function Go 언어와 다른 언어(C/C++, Java)와 다른 User Function의 차이점은 무엇일까요? 가장 큰 차이점은 다음과 같습니다. 다중 반환 값 (물론, C++17에서 다중 반환 값을 가질 수 있게 되었습니다. ex. ) 에러의 유무 확인 User Function에서 알아갈 내용은 크게 두 가지로 나뉩니다. 다른 언어와 다른 Go 언어의 User Function 포인터 그러나, 포인터와 같은 경우엔 C언어와 동일하게 동작하므로 해당 카테고리에서 포인터에 대한 설명은 생략하겠습니다. 따라서 Go 언어만의 특징인 User Function에 대해서 알아보겠습니다. Go언어의 strings의 함수 중 Atoi()라는 것에 대하여 설명드렸었습니다. https://devhsops.tistory.com/8?c..
*_test.go 파일 해당 포스트는 필자의 경험을 기반으로 작성하게 된 글입니다. Go 언어를 입문하는 사람으로써 저와 같이 단순한 실수를 예방하고자 글을 작성합니다. 결과부터 말씀드리자면 *_test.go 파일로 이름을 지을 땐 반드시 상황을 구별해야한다 는 것입니다. 그 이유는 무엇일까요? -> _test.go 로 끝나는 경우에는 go test로 실행하기 때문입니다. 저는 아무것도 모르고 파일의 이름을 pass_test.go 로 이름을 지정했습니다. go build pass_test.go를 실행한 결과는... no packages to build 라는 에러가 발생하였습니다. 해당 문제를 해결하고자 아래와 같이 필자가 시도했던 방법들에 대하여 정리한 후에, 현직자 분들이 계시는 커뮤니티에 질문을 올려 단 5분만에 해결하게 ..