Go

Golang에서 Lombok을 느껴보자

Lombok? Lombok은 Java에서 getter, setter와 같은 반복적인 코드를 줄여주는 라이브러리이다. Go 언어는 특성 상 Getter, Setter, 생성자와 같은 작업이 매우 귀찮다. 자바와 같은 경우 이런 작업을 자동으로 해주는 라이브러리가 존재한다. 예를 들어 아래와 같은 구조체에 생성자를 만든다고 가정해보자 type User struct { Name string Age int } 아마 대부분 다음과 같이 생성자를 만들어야 할 것이다. func NewUser(name string, age int) User { return User{ Name: name, Age: age, } } 자바에서는 생성자 생성을 보통 이렇게 하는데

Read more →

October 24, 2023

Golang 의 Type Alias 와 Named Type에 대해 알아보자

둘 다 타입 정의 시 기존의 타입을 재정의하는 방법이며 정의 방식은 아래와 같이 정의한다. type MyStruct struct { Name string Age int } func(m MyStruct) Print(){ fmt.Println(m.Name, m.Age) } type MyStructNamed MyStruct // Named Type type MyStructAlias = MyStruct // Type Alias Type Alias type alias의 경우 기존에 타입에 별칭을 지정하는 방식이기 때문에 기존 타입과 동일한 메서드를 가지고 있다. package main func main() { var m MyStructAlias m.Name = "GiraffeWithCode" m.

Read more →

October 13, 2023

Golang에서 Template 사용하기 (Go Template)

Go Template Golang에는 Go Template이라는 기능을 활용하여 자신이 지정한 포맷에 따라 여러가지 데이터를 바인딩하거나, 조작한 문자열로 내보내는 기능이 있다. text/template 패키지 텍스트 기반 템플릿을 처리하기 위한 두 개의 표준 라이브러리 패키지이며, 정해진 포맷이나, 특정 로직에 따라 텍스트를 생성해야 하는 경우 자주 사용한다. text/template라는 패키지를 사용하여 텍스트를 정해진 포맷대로 내보내는 예시는 아래와 같다. package main import ( "os" "log" "text/template" ) type Person struct { Name string Age int } func main() { t := template.

Read more →

September 23, 2023

Golang 에서 csv로 내보낸 파일에서 한글 깨짐 해결

BOM Excel은 UTF-8 인코딩된 CSV 파일을 올바르게 읽기 위해 파일의 문서 앞에 BOM이 필요하다. BOM: 바이트 순서 표시(Byte Order Mark, BOM)는 유니코드 문자 U+FEFF byte order mark로, 매직 넘버로서 문서의 가장 앞에 추가하여 텍스트를 읽는 프로그램에 여러 정보를 전달할 수 있다 In Code Golang에서 csv를 사용하는 경우 다음과 같이 한글이 깨지는 문제를 방지할 수 있다. package main import ( "encoding/csv" "os" ) func main() { file, err := os.Create("test.csv") if err !

Read more →

September 23, 2023