loading
본문 바로가기

반응형
Language/go lang. 8
반응형

[Go] Go언어 Channel (혹시 고루틴 포스팅을 보지 않으신 분은 먼저 훑고 오시길....) artist-developer.tistory.com/14?category=951423 [Go] 고루틴(go-routine) 앞서 Go언어 입문에 포스팅하였듯, Go언어의 대표적 특징 중 하나에는 병행성이 있다. Go언어는 'go' 키워드를 사용하여, 고루틴을 만드는데, 여기서 고루틴은 비동기적(asynchronously)으로 특정 함수 artist-developer.tistory.com 우리는 이제 Go언어에서 병행성(Concurrency)을 어떻게 보장하는지 알게 되었다. 이처럼 병행성이 보장된 Multi-thread와 같은 환경에서 가장 중요한 것은 동기화(Synchronous) 이다. Thread 간에 데이터를 공유하고 실행 순서를.. 2020. 9. 14.
[Go] 고루틴(go-routine) 앞서 Go언어 입문에 포스팅하였듯, Go언어의 대표적 특징 중 하나에는 병행성이 있다. Go언어는 'go' 키워드를 사용하여, 고루틴을 만드는데, 여기서 고루틴은 비동기적(asynchronously)으로 특정 함수 루틴을 실행하므로, 여러 함수(또는 코드)가 동시에(Concurrently) 실행된다.(병행성의 만족) 병행성(Concurrency) 흔히들 병렬성(Parallelism)과 병행성(Concurrency)을 혼동하곤 한다. 병렬성은, 실제로 여러 작업을 동시에 수행하는 것을 의미한다. 병행성은, 마치 여러 일을 동시에 하듯이 수행하는 것을 의미한다. 쉬운 예로 둘을 비교해보자. 이 글을 적고 있는 필자는 현재, '커피를 마시면서' '포스팅'을 하고 있다. 하지만 여기서, 커피를 마시는 일과 포스.. 2020. 9. 13.
[Go]GO 가비지 컬렉션(Garbage Collection) 저번 포스팅에 이어, Go의 대표적인 특징 중 하나인 가비지 컬렉션에 대해 알아보자. 가비지 컬렉터(GC)란? GO 언어의 이야기를 하기에 앞서, 먼저 가비지 컬렉터가 무엇인지 알아야한다. 여기서 가비지란, '유효하지 않은 메모리 주소', '해제되지 않은 메모리 영역'를 의미한다. 프로그래밍 언어에서는 보통 Danling Object라고 불리며, Java나 Go 에서는 Garbage라는 용어를 사용하고 있다. 우리에게 가장 친숙한 C/C++에서 그 예를 찾아보자면, //c++ int main(void) { int *a = new int; return 0;//Pointer를 해제하지 않고 프로그램 종료 : 메모리 누수 발생 } int* 에 할당된 메모리를 해제 하지 않고 프로그램을 종료하였다. C/C++에.. 2020. 9. 11.
[Go] Go 언어 강 타입(strongly-typed) 앞서 Go 언어의 대표적인 특징에서 언급한 것처럼, Go 언어는 강타입(strongly-typed) 언어이다. 프로그래밍 언어를 배우거나 다루다보면, 강타입/약타입이란 용어가 빈번하게 등장하곤 한다. 본 포스팅 에서는 이 용어가 의미하는 것이 무엇인지, 그리고 Go 언어에서는 이러한 특징이 어떠한 형태로 나타나는지를 알아볼 것이다. 강타입과 약타입 앞 포스팅에서 언급하였듯, 프로그래밍 언어에서 '타입'이란 자료형을 의미한다. 또한 여기에서의 강과 약이란, 자료형의 변환을 기준으로 구분된다. 흔히 Type Casting 또는 Type Conversion이라고 불리는 형변환은 언어를 능숙하게 다루기 위해서 반드시 숙지하여야 할 개념이다. (구글에 C++을 치면 'C++ int to string'. 'C++ .. 2020. 9. 9.
[Go]Go 언어 정적타입(static type) 앞서 소개 글에서 언급하였듯, Go 언어의 대표적인 특성 중 핵심은 정적타입 이면서 강타입 이라는 것에 있다. 프로그래밍 언어에서 타입이란, 자료형을 의미한다. 정적 타입 vs. 동적 타입 프로그래밍 언어는 바인딩 시기에 따라, 정적 타입과 동적 타입으로 나뉜다. 정적 타입 언어는 자료형을 지정하여, 컴파일 시에 변수의 형이 결정되는 언어이다. ex) C, C++, JAVA, C# 등 //C++ int num1 = 3; float num2 = 4.6f; double num3 = 3.23d; char ch = 's'; string str = "abc" string str_test = 1.2f; //컴파일 에러(자료형) //컴파일 시 자료형 결정 변수를 선언할 때, 반드시 앞에 타입을 명시해야 하는 언어들은.. 2020. 9. 7.
[Go] VSCODE에 Go 환경 설정 Go는 개발자를 위한 첫 언어로는 다소 적절하지 않다. 또한 첫 언어를 통해 자료구조 등의 Computer Science 기초 지식을 쌓는다는 관점에서 추측컨데, 이 글을 보는 사람 중, 코딩을 한번도 해보지 않은 사람은 없을 것이라 확신한다. 더 나아가, Visual Studio를 모르는 사람 역시 없을 것이다. (아아...마성의 C언어여....) VSCODE는 Visual Studio Code의 약자로, Visual Studio를 개발한 Microsoft 사에서 내놓은 굉장히 Lite한 툴이다. Python을 포함하여 수많은 언어를 VSCODE를 통해 개발할 수 있다. 이전 포스트에서 언급하였듯, 특히 Go는 VSCODE와 연동하였을 때 극강의 퍼포먼스를 발휘한다. VSCODE 설치 VSCODE를 다.. 2020. 9. 5.