분류 전체보기 46

GO언어 의존성 패키지 관리 Go Module편

시작하기에 앞서.. 보통 의존성 관리는 내장함수패키지(GoRoot) 써드파티패키지(GoPath) 로컬 패키지(사용자 지정)를 통해 관리된다. 그러나 이러한 패키지 관리는 다른사람과 협업하거나 다른 PC에서 프로젝트를 진행해야 할 때 의존성패키지를 직접 다시 설치해야하는 번거로움이 발생한다. 이를 해결하기 위한 의존성 관리 도구인 dep과 Go module이 있고, 이글에서는 Go Module에 대해 다룰 것이다. 주요 핵심 내용은 빌드를 하기 위한 사용법에 관해 설명 할것이며, 원리나 자세한 내용은 추후 추가로 글작성을 할 예정이다. 빌드(build) 빌드에 실행 조건인 main으로는 아래의 그림과 같고, 실행하고자하는 main에서 필요한 의존성 라이브러리는 zap 이다. 실행하고자 하는 코드를 빌드를 ..

Programming/Go 2021.05.21

Go언어 맵(map) key value값있는지 확인하기

Go언어에서 특정값을 평균속도 O(1)의 성능을 나오는 자료구조 중 하나는 map이다. map은 또한 파이썬의 딕셔너리와 비슷하게 작동한다는 점도 있다. 이러한 map은 딕셔너리와는 약간 다른점이 있는데, 그건 특정 key값과 value값을 확인할수 있는 내장함수지원 여부이다. 파이썬은 지원되지만 Go언어에서는 내장함수가 지원되지 않는다. map의 key값과 value값의 존재유무를 알기에는 내장함수가 아닌 직접 확인해야하는 단점이 존재하지만 Go언어만의 문법을 살려 간단하게 key,value값의 존재유무를 알 수 있게 설명하겠다. 우선 map에 대한것은 알고있다는 가정하에 작성한다. map에 대한 사용법(생성, 추가, 삭제)을 간단하게라도 보려면 아래에 링크를 참조하면 된다. min94programmi..

Programming/Go 2021.03.02

파이썬 함수 사용법[간단]

프로젝트를 진행하다보면 많은 부분에서 중복으로 발생하는 코드를 발견할 수 있을 것이다. 이러한 중복코드는 가독성을 떨어뜨릴 뿐만아니라 디버깅 작업또한 어렵게 만들어낸다. 더보기 함수 = def(매개변수1, 매개변수...): 이하생략 ... ... 중복코드를 깔끔하게 해결하는 방법 중 하나는 함수의 사용이다. 함수에 대해 예제로 설명하겠다. [예 시] # 합 def add(a,b): return a + b # 곱 def multiple(a,b): return a * b if __name__ == "__main__": sum_value = add(1,2) print(sum_value) multiple_value = multiple(1,2) print(multiple_value) 오늘은 함수에 대해서 알아봤다..

Programming/Python 2021.03.01

파이썬 pass 와 continue 차이점

코딩을 하다보면 특정 라인만 실행하거나 그렇지 않게 하고싶은 경우가 있다. 이럴경우에 주로 사용하는것이 pass와 continue인데, 상황에 따라 다르게 쓰인다. 고로 예제를 통해 pass와 continue 둘의 차이를 알아보자. [예제] # pass 적용 for i in range(10): if i % 2==1: pass print("pass", i) # continue 적용 print("==========================") for i in range(10): if i % 2==1: continue print("continue", i) 결론 - Continue는 해당 조건일 상황에서는 다음명령어를 실행하지않고 그냥 지나친다.

Programming/Python 2021.02.26

Go언어 구조체(struct) 편

이번주제는 구조체다. 처음배울때 대학시절 C언어에서 본것으로 기억나는데, 요즘은 어떤지 모르겠다. C언어를 기준으로 설명하자면, 사용법은 비슷하다. 구조체에 변수와 타입을 정해주기만하면 선언이 완료된다. 아래 그림은 구조체를 활용하여 두수의 합을 나타낸다. [ 예 제 ] package main import "fmt" type Number struct { A int B int } func Add(a, b int) int { return a + b } func main() { number := Number{A: 1, B: 2} result := Add(number.A, number.B) fmt.Println(result) }

Programming/Go 2021.02.26

Go언어 리시버(receiver) 편

해당 주제는 리시버다. 설명하기에 앞서, 이번 코드에서는 구조체를 사용하고 있고, 이를 알고 있다는 전제하에 설명한다. 리시버는 특정 객체로부터 해당되는 함수를 정의하는 것이다. 즉 쉽게 말하면 특정 객체만 접근이 가능하다는 것이다. 따라서 아래에 그림에서 명시된 Add함수는 (n Number)리시버를 사용하여 Number 객체만 접근이 가능하도록 하였다. [ 예시 ] package main import "fmt" type Number struct { A int B int } func (n Number) Add(a, b int) int { return a + b } func main() { number := Number{A: 1, B: 2} result := number.Add(number.A, numb..

Programming/Go 2021.02.26

Go언어 예외처리(panic, recover) 편

Go언어에서의 예외처리 사용법은 다른언어들에서 볼 수 있는 tryCatch 구조와는 약간 다르다. 따라서 Go언어에서 이용할수 있는 예외처리 방법을 설명하고자 한다. [panic함수 예제] package main import "fmt" func main() { var a int = 1 if a == 1 { panic("에러") } fmt.Println("hello world") } panic함수 사용법을 정리하면 다음과 같다. 1. panic함수 실행시 프로그램이 종료가 실행된다. 2. panic 실행이후 에러위치를 나타낸다. [panic & recover 예제] 설명 var a의 값에 따라 예외처리를 알아보는 코드이다. 결과를 정리하면 다음과같다. 1. 에러(a가 1일때) 2. 성공(a가 1이 아닐때)..

Programming/Go 2021.02.26

Go언어 "import cycle not allowed" 편

여러 개의 모듈을 사용하여 프로젝트를 하다 보면 "import cycle not allowed" 문구가 나와 당황하게 되었던 적이 있을 것이다. 그러나 원인을 알면 사이클이 왜 안되는지 알 수 있다. 자세한 건 아래 그림과 코드로 설명을 하겠다. [main.go] package main import ( "fmt" "golang/cycle/Firstsub" ) func main() { Firstsub.AddCall() } [Firstsub.go] package Firstsub import ( "fmt" secondsub "golang/cycle/Secondsub" ) func AddCall() { fmt.Println("this is firstSub") secondsub.CallSecondSub() } [..

Programming/Go 2021.02.25

Go언어 [초간단] 명령어 Os.Args 편

Os.Args 명령어를 받는 가장 기본적인 방법이다. 각 매개변수는 일반 변수, 옵션, json 파싱등으로 구성된다. [예시] package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args[0]) // C:\Users\hhh\AppData\Local\Temp\go-build2452782392\b001\exe\main.exe fmt.Println(os.Args[1]) // hi fmt.Println(os.Args[2]) // -mode=programming fmt.Println(os.Args[3]) // {\"name\":\"홍길동\",\"age\":\"20\"} }

Programming/Go 2021.02.24