본문 바로가기

language, framework, library/golang6

[Go] Java 개발자의 GoLang 튜토리얼 - Goroutine & GMP Model 개요GoLang을 잘 모르시는 분들이라도 Go하면 Goroutine을 사용한 효율적인 Thread의 운용으로 동시성에 대해서 좋은 퍼포먼스와 쉬운 사용을 보여주는 언어라는 사실 정도는 들어보신적이 있으실것 같습니다. 오늘은 GoLang의 Thread 모델과 이론에 대해서 간단히 본 후 goroutine의 사용방법에 대해서 알아보도록 하겠습니다.먼저 실습을 통해서 돌아가는 모습을 확인해보겠습니다. 그리고 기반이 되는 이론에 대해서 잠시 살펴보도록 하겠습니다. 주의하실 점은 해당 포스팅에서의 이론은 깊지 않습니다. 좀 더 깊은 내용은 레퍼런스를 참고해주세요.goroutine (고루틴)goroutine은 Go의 Runtime에 의해서 관리되는 경량 thread(aka. green thread)입니다.새로운 g.. 2023. 10. 10.
[Go] Java 개발자의 GoLang 튜토리얼 - Interface와 Duck Typing 개요Java에서의 Interface는 기능적인 설계를 추상화하고 특정 기능을 강제적으로 구현하게 만듬으로써 다형성과 같은 설계적인 이점을 가져가기 위한 언어적인 특징입니다. 우리는 Java에서의 Interface를 통해서 설계적인 추상화를 할 수 있고 상황에 따라 캐스팅하여 다형성(polymorphism)을 충족시킬수도 있습니다.Go에서도 interface가 있습니다. 하지만 Java에서의 interface와는 결이 유사하면서도 조금 다릅니다. Go에서의 Interface는 형태를 강제하지 않습니다. 반대로 Interface와 동일한 어떠한 형태를 띄고 있으면 이것을 Interface의 하나의 구현으로 보는 Duck Typing의 형태를 띄고 있습니다.이러한 부분이 이해가 잘 가지 않으실 수 있습니다. .. 2023. 10. 2.
[Go] Java 개발자의 GoLang 튜토리얼 - Method와 Receiver 개요안녕하세요. Java에서는 Class를 이용하여 코드를 캡슐화하고 OOP를 달성하는 기초로 활용합니다. 하지만 GoLang에는 클래스를 지원하지 않습니다. type struct로 커스텀 object를 만들 수는 있지만 method를 내부에 가질 수 없습니다. golang에서는 하지만, 그와 타입에 대한 method를 정의할 수 있는 방법이 별도로 있는데요. 그 방법에 대해서 알아보도록 하겠습니다.Receiver클래스 내부의 함수 즉, 메소드(Method)를 사용하기 위해서는 sturct type을 먼저 작성하고 Receiver 함수를 만들어주야합니다. 선언은 아래처럼할 수 있습니다.func (r {{ReceiverType}}) {{MethodName}}({{arguments}}) { // metho.. 2023. 9. 26.
[Go] Java 개발자의 GoLang 튜토리얼 - New vs Make 개요안녕하세요. Java는 new를 이용하여 Heap 메모리에 데이터를 할당할 수 있습니다. 반면 Go는 메모리에 할당할 수 있는 방법이 여럿있고 해당 방법에 따라서 할당되는 방식이 달라집니다. 오늘은 이러한 Golang의 Memory 할당에 대해서 알아보도록 하겠습니다.Java에서의 객체 메모리 할당Java에서는 아래처럼 new keyword를 이용하여 heap 메모리에 객체(Object)를 할당할 수 있습니다.User user = new User();Go 언어에서도 메모리에 객체를 할당할 수 있는 방법을 제공합니다. Go 언어는 Java와는 다르게 메모리를 할당하고 값을 초기화 할 수 있는 방법을 여럿 제공하고 있습니다. 어떠한 것들이 있는지 확인해보고 그 차이점을 확인해보도록 하겠습니다.newnew.. 2023. 9. 10.
[Go] Java 개발자의 GoLang 튜토리얼 - 데이터 타입과 타입 변환 (Conversion) 개요안녕하세요. Java를 이미 배운 상태에서 새로운 언어인 GoLang을 처음부터 배우는건 귀찮고 힘듭니다. 그래도 배워야한다면 이미 배운 지식인 Java를 이용해서 비교해가면서 배워보는건 어떨까요 ? 저는 이러한 방법으로 Go 언어를 배웠습니다. 그랬더니 조금은 덜 지루했던것 같아요.오늘은 Java와 비교하며 Go 언어의 문법적인 내용을 살펴보도록 하겠습니다.데이터 타입제일 처음 알아볼 Go 언어에 대한 내용은 DataType에 대한 내용입니다. DataType은 프로그램을 구성하는 가장 기본적인 메모리 구조에 대한 정의입니다. 어떤 DataType을 선택하느냐에 따라서 최적화된 프로그래밍이 가능합니다.DataType은 변수의 값이 메모리에 할당되는 사이즈를 정의할 수 있고 Type을 정의할 수 있습.. 2023. 9. 4.
[Go] Java 개발자의 GoLang 튜토리얼 - Mac에서 Go 설치 및 IDE를 통한 Run 안녕하세요. 오랫만에 인사드립니다. 거의 3달만에 신규 포스팅을 작성하게 되었습니다. 이전 마지막 포스팅이 6월 4일의 ChatGPT에 관한내용이더라구요. 한동안 공부와는 거리를 두고 지냈었습니다. 게임도하고 하반기에 있는 이벤트 준비도하고 그랬습니다. 그리고 이제 조금씩 다시 복귀하려고합니다.개요최근 회사 업무로 GoLang을 사용해불 수 있었습니다. Kotlin, React 이래로 제대로 하나의 언어를 공부하는것은 오랫만이었는데요. Golang 언어에 대해서 제가 얻었던 지식을 이번 포스팅부터 조금씩 풀어보려고합니다.어떤 언어든 설치하고 Hello World는 찍어보는것이 그 언어에 대한 시작이라고 생각합니다. 오늘은 Mac에서 Go를 설치하고 IDE를 통해 Run을 해보는것까지 진행해보겠습니다.Ma.. 2023. 8. 29.