필자는 4G/5G 통신 서버 개발자라 속도에 민감해 c/c++만을 사용한다. 그런데 요즘들어 여러 통신 서버 개발자 분들이 golang을 사용하는 것을 보았고 좋아보여서 공부해보려고 한다.사실 필자도 잘모르겠다. 그냥 로고가 귀여워서 공부하려고한다. 힙찔이https&#
Go는 컴파일 언어이다. 따라서, 소스 코드를 컴파일하여 cpu가 실행할 수 있는 바이너리 포맷으로 변환해 주어야 한다.이에 따라 go를 실행할 수 있는 명령어는 다음과 같다.go build : 소스 코드를 바이너리로 컴파일한다.go run : 프로그램을 컴파일한 다음
우리는 이미 함수를 배웠다. main() 자체가 함수 코드이기 때문이다. 따라 이를 기저로 함수의 선언을 분석하면 다음과 같다뭔가 굉장히 복잡해 보이지만, typescript나 kotlin을 배웠다면 그냥 매개변수의 타입 부분에서 ':' 을 뺀 것 뿐이다.문자열을 받
포인터 변수는 주소를 받아, 주소로 변수를 제어하는 기능이다.pointer가 남아있는 언어가 별로 없는데 golang은 포인터를 지원한다.이는 굉장히 강력한 기능이고 golang에 있어서 큰 장점 중 하나라고 생각한다. 포인터에는 타입과 에스테리스크(\*)가 필요하다.
패키지는 유사한 기능을 수행하는 코드들의 집합이다. fmt, strings 등도 모두 패키지이다.코드의 일부가 여러 프로그램 간에 공유되는 경우 코드를 패키지로 분리하는 것을 고려해 볼 수 있다.그러나, golang의 패키지 시스템은 자바나 c/c++처럼 그렇게 간단하
지난번 포인터 변수를 선언했을 때 재밌었던 것은 변수의 타입 앞에 \*(에스테리스크)를 썼다는 것이다.배열 역시도 마찬가지이다. 결국 배열의 사이즈를 나타내는 \[]을 변수 타입 앞에 써주기만 해주면 되는 것이다.다음과 같이 선언해주면 되는 것이다.그럼 사용방법을 한번
go에서는 값을 추가하여 확장할 수 있는 데이터 구조가 있는데, 이를 슬라이스라고 한다. 배열과 마찬가지로 슬라이스도 복수 개의 원소로 이루어져 모든 원소는 동일한 타입을 갖는다.그리고 핵심적인 것은 슬라이스는 배열과 달리 슬라이스 끝에 원소를 추가할 수 있다는 것이다
슬라이스나 배열은 데이터를 저장하는 자료구조이다. 그러나, 이들의 가장 큰 단점은 인덱스로만 검색을 해야한다는 것이다.만약 내가 원하는 데이터를 KEY-VALUE 형식으로 가지고 오고싶으면 어떻게 해야할까?? 가령, 가수를 검색한다고 하면 key는 ph1이고 노래는 v
go언어는 도대체 무슨 언어인지 헷갈릴 정도로 이 언어, 저 언어의 특징이 많이 담겨져 있다. 그 중에 하나는 바로 구조체이다.여태까지, 배열, 슬라이스, 맵은 모두 한개의 값과 한 가지의 타입을 저장할 수 있었다. 그러나 구조체를 사용하면 여러 타입과 여러 값들을 하
지난 번에는 구조체를 선언하고, 이를 사용하는 방법을 배웠다. 그러나, 구조체는 이것이 다가 아니다. c언어에서는 구조체에 함수를 넣어줄 수 없지만, c++이 되면서 구조체에 함수를 넣어줄 수 있었다.이것이 필요한 이유는 사용자 정의 타입에서 메서드를 정의하면 메서드
자바에서 객체 지향과 디자인 패턴의 핵심은 인터페이스이다. go 역시도 인터페이스를 지원하는 아주 재밌는 언어이다. 인터페이스를 사용하는 가장 큰 이유는 어떤 값이 어떤 특징 타입을 갖는지 관심이 없는 경우가 있기 때문이다.그 값이 무엇인지보다는 그 값으로 어떤 일을
이전에 interface 1편에서 interface 변수는 할당 받은 타입의 고유 메서드를 사용할 수 없다고 했다. 즉, 자바에서처럼 인터페이스와 구현체 모두 존재하는 메서드가 아닌, 구현체 내부에서만 존재하는 메서드는 인터페이스에서 사용할 수 없는 것처럼 말이다.그렇