[golang] 파일 잠금으로 프로그램 중복 실행 방지하기
·
Language/Go
서론무려 Go언어에서 개발할 수 있는 GUI 프로그램에서는 중복 실행을 방지해야 하는 경우가 있다. 서버 프로그램은 특정 포트에 바인딩을 하므로, 이미 해당 포트가 사용 중이라면 두 번째 프로세스는 바인딩에 실패하며 중복 실행이 자연스럽게 방지된다. 하지만 일반 프로그램의 경우에는 포트 바인딩과 같은 방법을 사용할 수 없기 때문에, 별도로 중복 실행을 막기 위한 방법이 필요하다. 이를 해결하기 위해 Go 언어에서 파일 잠금을 이용하여 중복 실행을 방지하는 방법을 활용할 수 있다. 예제package mainimport ( "bufio" "fmt" "os" "syscall")func main() { file, err := os.OpenFile("myapp.lock", os.O_CREATE|os.O_RDWR,..
[golang] 현재 운영 체제 확인하기
·
Language/Go
서론Go 언어에서는 빌드 태그를 사용하여 운영 체제별 동작을 구분할 수 있지만 간단하게 현재 운영 체제를 확인하는 방법도 있다. 이 방법으로 빌드 태그를 사용하기 복잡할 때나, 코드 내에서 운영 체제에 따른 분기를 간단히 처리하고 싶을 때 활용할 수 있다. 예제package mainimport ( "fmt" "runtime")func main() { switch runtime.GOOS { case "linux": fmt.Println("Running is Linux 🐧") case "windows": fmt.Println("Running is Windows ⊞") case "darwin": fmt.Println("Running is macOS 🍎") default: fmt.Println("Un..
[golang] iota 키워드로 열거형 상수 정의
·
Language/Go
서론코드 내에서 열거형 상수를 정의할 때, Go 언어는 이를 간편하게 처리할 수 있는 iota라는 키워드를 제공한다. iota는 상수의 값을 자동으로 증가시키는 특성을 가지며, 값의 증가 범위나 증감 간격을 설정하여 개발자가 반복적인 값을 일일이 지정할 필요 없이 쉽게 상수를 정의할 수 있게 해준다. 이 글에서는 iota 키워드의 기본 사용법과 다양한 활용 방법을 정리해본다. 기본 사용 예제package mainimport "fmt"const ( Low = iota Medium High)func main() { fmt.Println("Low:", Low) // Low: 0 fmt.Println("Medium:", Medium) // Medium: 1 fmt.Println("High:", Hig..