본문 바로가기

Go9

GoLand : import한 패키지의 내용이 Unresolved될 때 해결 방법 import한 패키지를 사용했을 때 Unresolved 표시가 되는 현상이 있었다. ex. computepb "cloud.google.com/go/compute/apiv1/computepb" 위 패키지를 사용한 computepb.Instance 구조체에서 Unresolved 표시 ex. 동료분이 공유해주신 원인은 패키지 파일이 너무 커서 인덱싱을 해오지 못해 그런 것이라고 한다. GoLand를 완전히 기본 설정으로 사용하고 있는 중이었고 GoLand 설정을 통해 해결할 수 있었다. 1. GoLand 상단 Help > Edit Custom Properties... 클릭 2. 아래처럼 idea.properties 파일이 새로 뜨면 아래처럼 입력해주면 된다. #---------------------------.. 2023. 4. 12.
[Go] 채널과 컨텍스트 [Tucker의 Go 언어 프로그래밍] 책을 참고 채널이란 고루틴끼리 메시지를 전달할 수 있는 메시지 큐로, 채널을 사용하면 뮤텍스 없이 동시성 프로그래밍이 가능하다. 컨텍스트는 고루틴에 작업을 요청할 때 작업 취소나 작업 시간, 추가 데이터 등을 설정할 수 있는 작업 명세서 역할을 한다. → 채널과 컨텍스트를 사용해 특정 데이터를 전달하거나, 특정 시간 동안만 작업을 요청하거나, 작업 도중에 작업 취소를 요청할 수 있다. 01 채널 채널 인스턴스 생성 var messages chan string = make(chan string) chan string은 string 타입의 메세지를 전달하는 채널 타입이다. 채널에 데이터 넣기 messages 2022. 3. 6.
[Go] 고루틴(Goroutine) [Tucker의 Go 언어 프로그래밍] 참고 고루틴 고루틴은 Go 언어에서 관리하는 경량 스레드이다. 함수나 명령을 동시할 때 사용한다. 여러 고루틴을 갖는 프로그램을 코딩하는 것을 동시성 프로그래밍이라고 한다. 고루틴을 이용하면 여러 작업을 동시에 수행할 수 있다. 고루틴은 Go 언어에 내장된 기능으로 외부 라이브러리에 의존하지 않고 동시성 프로그래밍을 구현할 수 있다. 멀티코어 환경에서 CPU를 더 효율적으로 사용해 빠르게 작업을 완료할 수 있다. 고루틴은 기존 OS 스레드에서 발생되는 컨텍스트 스위칭에 따른 성능 손실을 최소화해서 효율적으로 사용한다. 고루틴 간 메모리 간섭으로 인해 발생하는 문제점에 주의해야 한다. Go 언어에서는 CPU 코어마다 OS 스레드 하나만 할당해서 사용하기 때문에 컨텍스.. 2022. 3. 6.
[Go] 인터페이스(Interface) [Tucker의 Go 언어 프로그래밍] 책을 참고 인터페이스 인터페이스란 구현을 포함하지 않는 메서드 집합이다. 인터페이스만 가지고 메서드를 호출할 수 있어 추후 프로그램 요구사항 변경 시 유연하게 대처할 수 있다. 인터페이스를 이용하면 메서드 구현을 포함한 구체화된 객체가 아닌 추상화된 객체로 상호작용할 수 있다. type DuckInterface interface { Fly() Walk(distance int) int } 인터페이스 타입의 변수 선언이 가능하고 변수의 값으로 사용할 수 있다. 인터페이스에 포함된 메서드 집합의 유의사항 메서드는 반드시 메서드명이 있어야 한다. 매개변수와 반환이 다르고 이름은 같은 메서드는 있을 수 없다. 인터페이스에서는 메서드 구현을 포함하지 않는다. package m.. 2022. 3. 5.
[go/gin/gorm] Basic REST API 만들기 튜토리얼 (4) 이전 포스트 (1) : https://dev2som.tistory.com/152 이전 포스트 (2) : https://dev2som.tistory.com/153 이전 포스트 (3) : https://dev2som.tistory.com/154 저번 편에 이어서 gorm 패키지를 이용해 DB에 데이터를 바인딩할 수 있는 REST API를 만들어보려 한다. 우선 패키지 구조 go project를 만들어주고 다음 구조로 디렉터리와 go 파일들을 생성한다. models 패키지 : DB에 저장될 데이터의 구조체와 DB에 연결하는 코드가 들어있다. controllers 패키지 : HTTP 요청에 따라 호출되는 핸들러 함수들이 들어있다. main.go package main import ( "github.com/gin.. 2021. 12. 21.
[go/gin] Basic REST API 만들기 튜토리얼 (3) [go/gin/gorm] Basic REST API 만들기 튜토리얼 (4) 이전 포스트 (1) : https://dev2som.tistory.com/152 이전 포스트 (2) : https://dev2som.tistory.com/153 DB에 데이터를 적재하지 않는 방식으로 CRUD를 구현하는 API를 만들어보려고 한다. 데이터베이스와 연결하지 않으므로 이번 편에서는 gorm 패키지를 사용하지 않는다. 왕간단하다... main 함수 func main() { r := gin.Default() r.GET("/info", readInfo) r.POST("/info", createInfo) r.PUT("/info/:id", updateInfo) r.DELETE("/info/:id", deleteInfo) r.R.. 2021. 12. 18.
[go/gin] Basic REST API 만들기 튜토리얼 (2) : 데이터 바인딩 이전 포스트 바로가기 https://dev2som.tistory.com/152 [Go/Gin] Basic REST API 만들기 (1) IDE : Goland(고랜드) 이라는 책을 참고해 Go 언어로 웹 서버를 만들어보려 한다. (웹에 대한 기본 지식을 전제함) 책에는 Gin 프레임워크에 대한 내용은 없어서 따로 찾아보면서 진행했다. (REST API in G dev2som.tistory.com 이번 포스트에서는 request의 데이터 바인딩하는 방법에 대해 알아보려 한다. 01.Query String type user struct { Id int `form:"id"` Name string `form:"name"` Email string `form:"email"` } func main() { r := g.. 2021. 12. 16.
[go/gin] Basic REST API 만들기 튜토리얼 (1) : 서버 실행 및 데이터 바인딩 IDE : Goland(고랜드) 이라는 책을 참고해 Go 언어로 웹 서버를 만들어보려 한다. (웹에 대한 기본 지식을 전제함) 책에는 Gin 프레임워크에 대한 내용은 없어서 따로 찾아보면서 진행했다. (REST API in Golang using Gin Gonic : https://www.youtube.com/playlist?list=PL8-bdB4cHmXynirCIPtW0G5mCnaoMfr5u) 00. Gin 패키지 설치 go get -u github.com/gin-gonic/gin 01. Gin으로 API 서버 만들기 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default()// defaul.. 2021. 12. 16.
<Tucker의 Go 언어 프로그래밍> Done 리스트 (1회독) http://www.yes24.com/Product/Goods/99108736 Tucker의 Go 언어 프로그래밍 - YES24 게임 회사 서버 전문가가 알려주는 Go 언어를 내 것으로 만드는 비법구글이 개발한 Go는 고성능 비동기 프로그래밍에 유용한 언어이다. 『Tucker의 Go 언어 프로그래밍』은 Go 언어로 ‘나만의 프로 www.yes24.com 2021.12.06 / 084 ~ 234 03 Hello Go World 04 변수 05 fmt 패키지를 이용한 텍스트 출력 06 연산자 07 함수 08 상수 09 if문 10 switch문 11 for문 2021.12.07 / 236 ~ 336 12 배열 13 구조체 14 포인터 15 문자열 16 패키지 2021.12.08 / 354 ~ 393 18 슬.. 2021. 12. 15.