'프로그래밍/Go' 카테고리의 글 목록
ProgramminGucci
프로그래밍/Go
[Go] 외부 저장소 패키지 설치 및 사용
2024.11.28
Go는 표준 라이브러리 외에도 외부 저장소 패키지를 설치하여 다양한 기능을 추가할 수 있습니다. 이번 포스트에서는 Go의 외부 저장소 패키지를 설치하고, 이를 활용하는 예제를 통해 엑셀 파일을 읽어보는 방법을 소개합니다.1. 외부 저장소 패키지란?외부 저장소 패키지는 Go의 기본 라이브러리 외에 GitHub 등의 외부 소스에서 제공되는 추가 기능을 사용할 수 있게 해주는 패키지입니다. Go는 외부 패키지를 다운로드하고 관리하기 위해 go get 명령어를 제공합니다.2. 예제: xlsx 패키지 설치 및 활용엑셀 파일을 읽고 데이터를 출력하는 간단한 프로그램을 만들어보겠습니다. 이를 위해 tealeg/xlsx 라는 오픈 소스 라이브러리를 사용할 것입니다.2.1. 디렉토리 구조먼저 작업 디렉토리를 준비합니다...
프로그래밍/Go
[Go] 사용자 패키지 제작 및 문서화
2024.11.27
Go는 강력한 표준 라이브러리 외에도 자신만의 패키지를 만들어 재사용할 수 있는 기능을 제공합니다. 이번 포스트에서는 Go에서 사용자 패키지를 작성하고, 이를 문서화하는 방법에 대해 설명하고 간단한 예제를 제공하겠습니다.1. Go 사용자 패키지 제작Go에서 패키지를 만드는 방법은 매우 간단합니다. 기본적으로 하나의 디렉터리가 하나의 패키지를 나타냅니다. 예를 들어, 사칙 연산을 처리하는 패키지를 만든다고 할 때, 아래와 같은 구조로 패키지를 작성할 수 있습니다.1.1. 패키지 파일 작성패키지를 만들려면 먼저 package 키워드를 사용하여 패키지를 정의해야 합니다. 예를 들어, 사칙 연산을 처리하는 패키지를 만들고 싶다면, 아래와 같이 작성할 수 있습니다.// arithmetic/arithmetic.go..
프로그래밍/Go
[Go] Go의 에러 처리와 panic/recover
2024.11.26
Go 언어는 명시적인 에러 처리를 지향합니다. panic과 recover는 비정상저인 상황에서만 사용하는 도구로, 남용하지 않는 것이 중요합니다. 1. 에러 처리 : 기본 패턴Go에서는 일반적인 오류 처리는 error 인터페이스를 반환하고 호출자가 이를 처리하는 방식으로 진행예제: 기본 에러 처리package mainimport ( "errors" "fmt")// 두 숫자를 나누는 함수func divide(a, b int) (int, error) { if b == 0 { // 에러 생성 및 반환 return 0, errors.New("cannot divide by zero") } return a / b, nil}func main() { // 에러 처리 result, err := divide(10, 0..
프로그래밍/Go
[Go] 고루틴 동기화: 뮤텍스(Mutex) 사용 전후 비교 - 읽기, 쓰기
2024.11.26
1. 뮤텍스 사용 전뮤텍스를 사용하지 않으면, 여러 고루틴이 동시에 공유 데이터에 접근하면서 읽기와 쓰기 작업이 충돌할 가능성이 있습니다.package mainimport ( "fmt" "runtime" "time")func main() { runtime.GOMAXPROCS(runtime.NumCPU()) // CPU 코어 수에 맞게 병렬 실행 설정 data := 0 // 쓰기 작업 고루틴 go func() { for i := 1; i 결과출력은 실행할 때마다 순서가 다르게 나타나며, 쓰기 작업 도중 읽기 작업이 실행되면 중간 값이 출력될 수 있습니다.예시 출력Write: 1Read1: 1Write: 2Read2: 2Write: 3Read1: 3Write: 4Read2: 4문제점- Rea..
프로그래밍/Go
[Go] 고루틴 동기화: 뮤텍스(Mutex) 사용 전후 비교
2024.11.26
1. 고루틴 동기화란?- 고루틴(Goroutine)은 Go 언어에서의 경량 스레드로, 동시성을 쉽게 구현할 수 있게 해줍니다.- 하지만 여러 고루틴이 공유 데이터를 동시에 수정할 경우, 데이터 정합성 문제가 발생할 수 있습니다.- 이를 해결하기 위해 동기화(Synchronization)가 필요합니다. 2. 뮤텍스(Mutex)란?- 뮤텍스(Mutual Exclusion)는 공유 데이터를 보호하기 위한 동기화 기법입니다.- 데이터를 읽거나 쓸 때, 한 번에 하나의 고루틴만 접근하도록 보장합니다.- Go에서는 sync.Mutex를 제공하며, 이를 사용해 데이터를 보호할 수 있습니다.- 상호 배제 -> Thread(고루틴)들이 서로 running time에 서로 영향을 주지 않게 즉, 단독으로 실행되게 하는 기..