GoLang > 2007년 구글에서 일하던 켄 톰슨, 롭 파이크 로버트 그리즈머에 의해 개발되었으며, C++의 느린 빌드 속도, 언어의 복잡성, 안정성 확보의 어려움, 동시성 프로그래밍의 어려움에 한계를 느끼고 이를 개선한 Go 언어가 개발되었다. Go Lang 특징
변수란 특정 값을 저장하는 메모리 공간을 뜻한다. 변수를 지정하는 법은 언어마다 조금씩 다른데, go에서는 var x int 형식으로 선언한다. 이렇게 선언을 하며 값을 초기화 하지 않으면 자동으로 Zero Value 즉 숫자형은 0으로, 문자열형은 빈 공백으로, 논리
캐스팅이란 다른 데이터 타입으로 형변환을 하는것을 의미항상 범위를 염두에 두고 형변환을 할것int8 > int32 로 작은 범위에서 넓은 범위로 캐스팅할 경우는 안전하지만, int8 > uint8로 캐스팅 할 때는 음수 때문에 오버플로우 문제가 발생할 수 있다. int
Go에서 struct는 Custom Data Type을 표현하는데 사용되는데, Go의 struct는 필드들의 집합체이며 필드들의 컨테이너이다. Go에서 struct는 필드 데이터만을 가지며, (행위를 표현하는) 메서드를 갖지 않는다.Go 언어는 객체지향 프로그래밍(Ob
포인터 Go언어에서는 항상 값을 전달한다 > 포인터란 메모리 주소를 저장하는 변수 타입이다. Go 언어에서 모든 데이터는 값의 전달 (pass by value) 로 작동한다. 즉 reference 방식이 아닌, 전달해야 할 데이터의 원본이 아닌 복사본을 만들어 전달
Go언어의 제어구조는 C와 연관성이 있지만, 중요한 점에서 차이가 있다. Go언어에서는 do나 while 반복문이 존재하지 않으며, 단지 좀 더 일반화된 for, 좀 더 유연한 switch가 존재한다. if와 switch는 선택적으로 for 와 같은 초기화 구문을 받을
함수는 여러 문장을 묶어서 실행하는 코드 블럭의 단위이다. 타 언어와의 다른 특징이라면 파라미터에 항상 타입을 적어서 정의해주어야 한다. 또한 return 타입 또한 기입해야 하는데 파라미터 괄호 뒤에 기입하도록 되어있다.이는 C와 같은 언어에서 리턴 타입을 함수명 앞
Go에는 메모리를 할당하는 두 가지 기본 방식이 있는데, 빌트인 함수인 new와 make이다. 서로 다른 일을 하고 다른 타입들에 적용되기 때문에 혼란스러울 수 있지만, 규칙은 간단하다. new를 사용하는 메모리 할당 내장 함수로 메모리를 할당하지만 다른 언어에
인터페이스 go언어의 인터페이스는 객체의 행위를 지정해주는 하나의 방법이다. 인터페이스를 사용하는 가장 큰 이유는 어떤 값이 어떤 특징 타입을 갖는지 관심이 없는 경우가 있기 때문이다. 그 값이 무엇인지 보다는, 어떤 행동을 하는지, 어떤 일을 할 수 있는 지에 대
fmt.Errorf() 함수를 이용하면 간단하게 err를 만들어 낼 수 있다. 여기서 err의 타입은 어떻게 될까?코드를 타고 선언된 부분으로 들어가보면위와 같이 타입이 선언되었음을 알 수 있다. 즉 error는 인터페이스이고, 메서드로 Error()만을 가지고 있다.

이미 정의한 무언가(타입)을 재활용하여 새로운 무언가(타입)을 만드는 것을 Embedding 이라고 한다. 이러한 방법으로는 대표적으로 상속 과 컴포지션 이 있다.상속 : 하위 클래스가 상위 클래스의 특성을 재정의, (IS-A) 관계컴포지션 : 하위 클래스가 상위 클래
라이브러리 루틴은 호출자(caller)에게 어떤 상황의 에러라 해도 자주 리턴해 주어야한다. Go의 특징인 다중값 리턴은 일반적인 리턴값에 비해 상세한 에러 내용을 제공하기 쉽게 만들어준다.상세한 에러 내용을 제공하기 위해 이러한 특징을 활용해야 할 것이다. os.Op

공유 변수에 대한 정확한 접근을 구현하기 위해 엄수해야 하는 세세한 내용들은 다양한 환경에서 동시성 프로그래밍을 어렵게 했다. Go는 공유 변수가 채널을 돌려가며 전달된다는 점에서 다른 접근을 권장한다.공유 변수는 개별 쓰레드 실행에 의해서 결코 공유되지 않는다. 언제
Go 채널은 그 채널을 통해 데이터를 주고 받는 통로라 볼 수 있다. 채널은 이전 포스팅에서 얘기했듯이 maek() 함수를 통해 미리 생성되어야 하며, 채널 연산자 <- 를 통해 데이터를 주고 받는다. 채널은 흔히 goroutine들 사이 데이터를 주고 받는데 사