golang

GraphQL이 뭔지 궁금하다면 다음 주소를 참고 ㄱㄱ https://seung.tistory.com/entry/GraphQL%EC%9D%B4-%EB%AD%94%EC%A7%80-%EC%95%8C%EC%95%84%EB%B3%BC%EA%B9%8C Go에서는 GraphQL을 지원하는 라이브러리는 참 많던데 주로 쓰이는 건 아래와 같다 99designs/gqlgen: https://github.com/99designs/gqlgen graphql-go/graphql: https://github.com/graphql-go/graphql graph-gophers/graphql-go: https://github.com/graph-gophers/graphql-go 뭘 할까.. 대충 아래 목록을 기준으로 고르도록 했다 해..
1. Go가 뭐라고 생각해요? Go는 요즘 같은 시대에 딱 적합한 언어라고 생각합니다 빠르게 컴파일링 가능하고, 복잡함을 최소화했으며 문법도 간단하고 경량 스레드를 가진 데다가 C와 라이브러리와 네이티브 시스템 호출 등 상호운용성도 챙겼기에 매우 좋은 언어라 생각합니다. 2. Go 프로그램의 패키지를 설명해 주세요? 패키지란 비슷한 기능을 가진 함수, 타입, 변수들이 집합으로 패키지는 코드의 구조를 조직화하고 네임스페이스를 제공하는 역할을 합니다. GO는 패키지로 구성되며 main 패키지에서 실행됩니다. go mod init : 모듈을 초기화합니다. go get : 외부 모를 가져옵니다. go build : 코드를 빌드합니다 3. 사용자 지정 패키지란? 프로젝트 디렉터리 아래에 라이브러리 파일이 있는 디..
개요 https://www.acmicpc.net/problem/1007 1007번: 벡터 매칭 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속 www.acmicpc.net 문제는 다음과 같습니다. 평면에 점들의 집합인 P가 있고 여기에는 N개의 좌표가 있다, N은 짝수이다. 집합 P에서 N개의 벡터를 만들 수 있다, 즉 벡터는 N/2개이다. P에서 나오는 벡터들의 합 중 최솟값을 출력해라. 이 문제를 풀려면 우선 🔍벡터의 합은 어떻게 구하는가? 벡터의 값은 끝점 - 시작점으로 구할 수 있습니다. 벡터 v1는 x1, y2에서 x2, y2로 향한다 v1 ..
개요 이번 포스팅은 Golang을 할 때 가장 큰 장점으로 꼽히는 부분인 동시성(고루틴)과 크게 관련된 내용입니다. 동시성 프로그래밍은 사실 쉽지 않습니다. 동시에 실행된다는 개념 때문에 프로그래머가 생각하는 순서와 실제 프로세스의 순서가 다를 수 있습니다. 이 문제를 레이스 컨디션이라 부릅니다. 레이스 컨디션 (Race Condition) : 개발자의 의도와 상관없이 작동 순서가 바뀔 수 있어 항상 결과가 일관되지 않을 수 있습니다. 아래는 간단한 레이스 컨디션의 예제입니다. var num int go func() { num++ }() if num == 0 { fmt.Printf("The value is %d.\n", num) } 위 코드의 결과는 대부분 "The value is 0."로 출력될 겁니다..
최근 면접에서 Go의 Context가 뭐냐고 물으셨다. 가장 중요할 때 기억이 나지 않는 게 세상의 규칙인 건가.. 라는 생각이 들었다 그렇게 백수의 기간이 늘었다 Context 정의 context 패키지에서 제공하는 걸로 간단하게 생각하면 작업 명세서라 할 수 있다. "10시부터 12시는 네가 일해, 그리고 중간에 냉장고 정리를 하고 에어컨을 꺼야 돼, 나는 여기서 청소하고 있을게"와 어떻게 하지를 정의해주는 작업 명세서다. 새로운 고루틴을 시작할 때 시간을 지정해주기도 하고 외부의 작업을 취소할 때도 사용할 수 있다. 거기에 작업 설정에 대한 정보도 전달이 가능하다. 이게 가능해진 버전은 Go 1.7 버전(2016-08-15일)부터로 그때부터 기본으로 탑재가 됐다. Context 단어 뜻을 그대로 직..
GoLang에서 처음 Interface를 배울 때 가장 헷갈렸던 점은 Interface에 포함되는 구현체 구분에서 따로 정의가 없는데 어떻게 구분할까였습니다. 그랬던 이유는 "덕 타이핑"이라는 특징 덕분입니다. 우선 Java와 같은 타 언어들에서는 아래처럼 Interface를 implements와 같은 키워드로 사용합니다 (아래 코드는 Java가 아닌 Go에서의 예제이고 에러가 발생하는 예제입니다.) package main type Animal interface { SetName(name string) } // impelments를 통해 interface를 지정 type Dog struct impelments Animal { Name string } func (d *Dog) SetName(name str..
Go Lang으로 간단하게 CRUD REST API 만들기 1편 1. 개요 간단한 CRUD API를 만들어봅시다, 제 경우 Go version은 1.20으로 개발했습니다. HTTP 요청을 핸들링하기 위한 라이브러리로 gorilla/mux를 사용합니다. 사용 이유는 18.2k의 달하는 스타와 오랜 기간 안정성이 테스트되었기에 실무에서 쓰일만한 라이브러리라 판단하여 사용했습니다. - Go 세팅이 되어있고 HTTP Method를 이해하고 있다는 가정하에 진행됩니다. - 해당 포스트에서는 데이터베이스를 사용하지 않고 메모리를 통해서 데이터를 관리할 것입니다. - 모든 코드는 main.go에서만 작업됩니다. - 1편에서는 GET을 다루고 2편에서 나머지를 다룹니다. ※ REST API : 인터넷을 통하여 컴퓨터 ..
DSeung
'golang' 태그의 글 목록