ProgrammingLang/Go 10

[go] vscode Error 및 Warning

개요 vscode에서 코딩시 발생하는 오류들을 정리 합니다. (ST1017) Yoda conditions don't use Yoda conditions (ST1017) go-staticcheck https://knowthecode.io/yoda-conditions-yoda-not-yoda Yoda Conditions: To Yoda or Not to Yoda - Know the Code Tonya explains the Yoda conditions programming style. She discusses its intent and the problem it seeks to solve. A handy guide and litmus test are included to help you decide when..

ProgrammingLang/Go 2023.02.02

[go] go mod vendor 사용법

개요 go mod vendor의 사용법을 알아보겠습니다. go mod vendor 필요 성 go에서는 1.13부터 module이라는 기능을 이용하여 package의 의존성을 자동으로 관리를 해줍니다. 그러나 여기서 하나의 문제점이 발생을 합니다. 그것은 go module을 사용하기 위해서는 항상 internet에 연결이 되어있어야 한다는 것입니다. 하지만 일반적으로 제품 개발 시는 보안을 위해서 폐쇠망에서 build를 합니다. 그러면 go module을 통해서 package를 다운로드할 수가 없습니다. 그래서 필요한 기능이 다운로드한 package에서 compile시 필요한 파일만 보관하는 기능인 go module의 vendor 기능입니다. 우선 간단한 테스트를 위해서 logrus를 사용하는 packag..

ProgrammingLang/Go 2023.01.31

[go] 내부 module 및 package 만들기

개요 이전 post([go] 1. downloading 가능한 module 및 package 만들기)에서 download가능한 module을 만들어 보았습니다. 그러나 program 을 개발 하다보면 외부에 노출 되면 안되는 module들도 많이 개발합니다. 그러면 이러한 module을 어떻게 만들면 되는지 알아보겠습니다. 참조 : https://go.dev/doc/tutorial/call-module-code 절차 1. 내부 모듈 생성 (inner_hello) 2. 내부 모듈 경로 설정 3. main package에서 호출 내부 모듈 생성 (inner) 내부 모듈은 main package directory에서 생성을 합니다. 1. inner 생성 #mkdir inner 2. inner_hello mod..

ProgrammingLang/Go 2023.01.20

[go] downloading 가능한 module 및 package 만들기

개요 go 1.19 기준에서 프로그램을 가끔 만들면 사용자 module 를 만들어야 할 때가 매우 많이 생깁니다. 그런데 항상 module 만드는 방법을 까먹습니다. 우선 첫 번째 post에서 download가능한 module을 만들어 볼것 입니다. 참고로, 모든 정보는 https://go.dev/ 에서 가져왔습니다. 알고 싶은 것 1. 나만의 module를 만드는 순서 필요한 사전 지식 - module과 package의 관계 - module 용도 - package 용도 module과 package의 관계 https://go.dev/doc/tutorial/create-module Go 코드는 package로 그룹화되고 package는 module로 그룹화됩니다. 그래서 나만의 module을 만들때는 mo..

ProgrammingLang/Go 2023.01.19

[go] 개발에 도움되는 오픈소스

1. cli 개발에 도움주는 패키지 각종 옵션 및 서브 명령어를 쉽게 사용 할 수 있도록 도와 줍니다. https://cli.urfave.org/ Welcome - urfave/cli Welcome to urfave/cli urfave/cli is a simple, fast, and fun package for building command line apps in Go. The goal is to enable developers to write fast and distributable command line applications in an expressive way. These are the guides for each major s cli.urfave.org

ProgrammingLang/Go 2023.01.18

[Go Lang] package xx is not in GOROOT (/snap/go/9028/src/xx) 해결 방법

개요 package xx is not in GOROOT 에러를 해결 합니다. 발생이유 사용자가 만든 패키지를 go complier가 $GOROOT에서 찾고있어서 발생함. 아마 대부분 다음 단계를 거쳐서 디레토리 구조를 이렇게 만들고 개인이 만든 패키지를 추가하려고했을 것입니다. 1. go 사용자 package 생성 및 main.go 생성 ├── go.mod ├── lib │ └── common.go └── main.go lib/common.go (사용자 패키지) package common import "fmt" func PrintModuleName() { fmt.Println("Common") } main.go package main import ( "lib" ) func main() { common.P..

ProgrammingLang/Go 2022.03.03

[Go Lang] 4. 실전 - http server + swagger 만들기

목표 web framework를 사용하여 간단한 web api server를 만들어 보겠습니다. 배포는 추후 포스트에서 다루겠습니다. 개발 환경 - ubnutu 18.04 - go version go1.16.3 linux/amd64 (업그레이드 방법: golang.org/doc/install) webframework 프레임 워크는 간단한 RESTAPI 용도로 사용 할 것 이기 때문에 gin을 사용합니다. 사용 이유 : www.slant.co/versus/4796/4797/~beego_vs_gin-gonic Slant - Beego vs Gin-gonic detailed comparison as of 2021 When comparing Beego vs Gin-gonic, the Slant community..

ProgrammingLang/Go 2021.04.14

[Go Lang] 3. Package 관리

Package란? 다른 사람이 만든 함수들의 모임이라고 정의 할 수 있다. 프로그래밍을 하면은 수많은 Package를 설치 하게 됩니다. Package는 어디에 설치 되는가? 인터텟의 튜토리얼을 보면 이거 설치 하시고 저거 설치 하세요 라는 경우가 많다. 설치까지는 좋다 그런데 어디에 설치 되어있는지 몰라서 Package 관리가 안된다. 1. 우선 pkg를 설치해 보자 필자는 web api를 만들 것이니 gin-swagger를 설치해서 api 테스트 해보록 하겠습니다. 설치 방법은 github.com/swaggo/gin-swagger여기서 참조 했습니다. 1.1 swag cli 다운로드 #go get github.com/swaggo/swag/cmd/swag@latest 자 위와 같이 설치하면 도대체 어디..

ProgrammingLang/Go 2021.04.08

[Go Lang] 2. 핵심 문법

본 Go에 대한 모든 실습은 Linux(ubunutu)에서 진행 합니다. 1. 선언과 관련 키워드 개념 및 사용법 - 프로그램 개발 순서대로 나열 분류 키워드 설명 사용법 package package 현재 작업하는 파일 어느 package에 속하는지 선언 합니다. - package 패키지명 package main import 현재 작업하는 파일에서 사용 할 package를 선언 합니다 import ( "패키지명" "패키지명" ) import ( "fmt" "log" ) 변수 var - 변수를 선언 합니다. - go에는 초기화 안되는 변수가 없으며 초기화 값 아래 표기 숫자 = 0, boolean = false string = "" interface = nil - 여러 방식의 선언이 가능 합니다. 1. v..

ProgrammingLang/Go 2020.06.09

[Go Lang] 1. 프로그램의 기본 구조

본 Go에 대한 모든 실습은 Linux(ubunutu)에서 진행 합니다. 1. 프로그램의 기본 구조 GoLang의 프로그램 구조는 package, import, main으로되 어있다. package main import ( "fmt" ) func main() { fmt.Println("Hello, GoLang") } 1) package "패키지명" - 현재의 소스 파일이 어느 패키지에 들어가 있는지를 명시한다. - 최종 Directory 명이 패키지 명이 된다 - 예외적으로 package main라고 되어있다며 현재 소스파일은 단독 실행 파일임을 명시한다. 2) import ("패키지명") - 각종 Package(=Library) 를 불러오는 역활을 한다. c언어의 #include와 동일한 기능이다. 3..

ProgrammingLang/Go 2020.06.09