본문 바로가기

반응형

IT/Go 언어 (Golang)

(9)
[Golang] 자체 MQTT 브로커 서버 구현 - 2 기능 상세 설명 [Golang] 자체 MQTT 브로커 서버 구현 - 1 MQTT Broker 서버 구현 MQTT 브로커 서버 구현에 앞서, 만약 이론적 배경이 궁금하다면 아래 포스트를 먼저 읽고 오는 것을 추천한다. 링크 1: MQTT 원리 이론편 [통신 이론] MQTT, MQTT Protocol (MQTT 프로토콜.. underflow101.tistory.com 위 1편에서 설명된 자체 MQTT Broker 서버의 기능 상세 설명을 하려 한다. 이를 위한 소스 코드는 아래 깃허브에서 확인 가능하다. underflow101/goMQTTServer MQTT Broker Server in Golang. Contribute to underflow101/goMQTTServer development by crea..
[Golang] 자체 MQTT 브로커 서버 구현 - 1 MQTT Broker 서버 구현 MQTT 브로커 서버 구현에 앞서, 만약 이론적 배경이 궁금하다면 아래 포스트를 먼저 읽고 오는 것을 추천한다. 링크 1: MQTT 원리 이론편 [통신 이론] MQTT, MQTT Protocol (MQTT 프로토콜) 이란? - 1 (이론편) 이 론 MQTT(Message Queueing Telemetry Transport)는 2016년 국제 표준화 된 (ISO 표준 ISO/IEC PRF 20922) 발행-구독(Publish-Subscribe) 기반의 메시지 송수신 프로토콜이다. 작은 코드 공간이 필요하거나 네.. underflow101.tistory.com 링크 2: MQTT - Arduino(ESP32) 실전편 [통신 이론] MQTT, MQTT Protocol (MQTT..
[Golang] 고루틴과 채널(chan)을 이용한 피보나치 수열 이번에는 고루틴과 채널을 이용하여 피보나치 수열을 생성하는 함수를 만들어보자. 소스 코드는 다음과 같다. // Go Fib package main import "fmt" func Fib(max uint64)
[Golang] Go Routine (고 루틴) - Golang의 꽃 [기본] Golang에는 Go Routine(이하 "고루틴")으로 불리는 동시성 예약어가 있다. 즉, main 함수를 돌리면서 순차적이 아니라 익명함수나 함수를 동시에 실행시킬 수 있다는 뜻이다. 바로 아래 예제를 살펴보자. // Go Routine package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup var cnt int = 10 var n int = 1 for i := 0; i < 10; i++ { wg.Add(1) go func(n int) { defer wg.Done() cnt-- switch n { case 1: fmt.Println("I'm", n, "st Go Routine! :D and now cnt is:", cnt) c..
[Golang] Go Routine (고 루틴) - Golang의 꽃 [심화] 이 론 어느 프로그래밍 언어나 해당 언어만의 강점, 혹은 "꽃"이라고 불릴 만한 것이 있다. 예를 들어 C언어의 꽃이라고 한다면 누가 물어도 "포인터"일 것이며, Python 같은 경우 "Life is too short, you need Python."으로 대표되는 "초고도의 생산성"일 것이다. (필자의 경우 이 초고도의 생산성이 파이썬의 에 따라 Call by Assignment로 자료형을 다루기 때문이 아닐까 조심스레 추측해본다.) 그렇다면, Go언어에서는 "Go Routine"이 있다. (이하 "고루틴") 고루틴은 가벼운 스레드와 같은 것으로, 현재 수행 흐름과 별개의 흐름을 만들어준다. 스레드는 으레 SW직군 면접 질문에 나오는 단골 질문인 "프로세서와 스레드의 차이점이 뭔가요?"에서 단 한 줄로..
[Golang] 문자열과 문자열의 종류 Golang에서는 char 자료형이 없다. 대신 string 자료형이 굉장히 유연하고 유용하게 사용된다. string 자료형은 크게 2 종류로 나뉜다. Raw String Literal: Back Quote(` `)로 둘러싸인 string. '\n' 등을 NewLine으로 해석하지 않고 있는 그대로 표기한다. 즉, 여러 줄의 문자를 치기 좋다. 주의할 점: 작은 따옴표(' ')가 아닌, shift와 같이 누르면 물결표(~)가 나오는 문자인 Back Quote(` `)를 사용해야한다! Interpreted String Literal: 큰 따옴표(" ")로 둘러싸인 string. 복수라인으로 선언할 수 없으며 연산자들을 제대로 반영한다. C/C++의 String과 비슷하게 사용 가능하다. Raw String..
[Golang] 데이터 타입 (자료형) 불대수 자료형 bool 문자열 자료형 string (immutable: 생성 후 변경 불가능) 정수형 자료형 int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr Float 및 복소수 자료형 float32 float64 complex64 complex128 기타 byte: byte 코드(단위: unsigned 8-bit) rune: 유니코드 코드(단위: signed 32-bit) 채널 chan: 추후 배울 고 루틴(Go Routine)에서 사용될 채널형 자료형
[Golang] Go 예약어 (선점 키워드) 아래의 25개의 예약어는 미리 정의되어 있는 키워드로써 변수명, 상수명, 함수명 등에 사용될 수 없다. break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var

반응형