목록프로그래밍언어/Golang (7)
Fall in IT.
안녕하세요. 오늘은 Golang에서 Singleton Pattern을 구현하는 방법에 대해서 간단하게 알아보겠습니다. Singleton Pattern이란? 이 패턴은 인스턴스가 하나만 존재해야 하는 경우 사용된다. (예를들어서, DB 인스턴스나 Logger와 같은 인스턴스가 이에 해당할 수 있다.) 구현 방법 1. Mutex를 사용하는 방법 var lock = &sync.Mutex{} type single struct { } var singleInstance *single func GetInstance() *single { if singleInstance == nil { lock.Lock() defer lock.Unlock() if singleInstance == nil { fmt.Println("[Mu..
안녕하세요. 오늘은 Go 1.8 버전에서 추가 된 generic을 사용해보도록 하겠습니다. Generic에 대한 개념은 여기서 확인해주시기 바랍니다. Generic 사용 전 (source code) interface를 사용하여 스택을 구현한 경우 package main import "fmt" type stack struct { data []interface{} } type Stack interface { Push(data interface{}) Pop() interface{} Get() []interface{} } func New() Stack { return &stack{ data: []interface{}{}, } } func (s *stack) Push(data interface{}) { fmt.P..
안녕하세요. 오늘은 Go에서 Slice에서 중복을 제거하는 방법에 대해서 알아보겠습니다. Go에서는 Map을 사용해서 Slice의 아이템 중복을 제거할 수 있습니다. Slice의 아이템을 순회하면서 map에 존재하지 않다면 삽입, 존재한다면 pass 하는 방식을 이용합니다. (이때, map의 값으로 빈구조체(struct{})를 넣는 이유는 빈구조체의 경우 메모리를 차지하지 않기 때문입니다.) 샘플 코드 func deleteDuplicateItem(arr []string) []string { ret := []string{} m := make(map[string]struct{}) for _, val := range arr { if _, ok := m[val]; !ok { m[val] = struct{}{} ..

안녕하세요, 오늘은 Go 함수를 사용할때 매개변수로 포인터형 변수를 넘겨줄때와 일반적인 형태의 값을 넘겨줄때의 차이점에 대해서 알아보겠습니다. go의 함수를 사용할때 매개변수로 포인터형 매개변수를 사용하느냐 아니면 일반 자료형을 사용하느냐에 따라서 동작 방식이 달라진다. 포인터형 매개변수를 사용할 경우 값이 복사되지 않고 현재 인스턴스의 주소가 전달되기 때문에 값의 변경이 발생한다. 일반 자료형을 사용할 경우 값이 복사되어 전달되기 때문에 전달된 값의 변경은 일어나지 않는다. 상황에 따라 잘 구분하여 사용해야한다. 샘플 코드 결과 모두 즐거운 코딩 하세요~

안녕하세요. 오늘은 Golang에서 JSON 인코딩 / 디코딩을 사용하여 json object를 string으로 혹은 json string을 object 형태로 변환하는 방법에 대해서 알아보도록 하겠습니다. 소스코드 package main import ( "encoding/json" "fmt" ) // Person - 사람 정보 type Person struct { Name string Age int Sex int // 0: 여자, 1: 남자 } func main() { fmt.Println("Say hi!") // 1. CONVERT JSON OBEJCT TO STRING fmt.Println("\n1.CONVERT JSON OBEJCT TO STRING") var personA = Person{"Al..
안녕하세요. 오늘은 Golang에서 숫자(int)인 문자열을 숫자(int)로 변경하기 등 자주 사용되는 data parsing 방법에 대해서 알아보겠습니다. package main import ( "fmt" "reflect" "strconv" ) func main() { fmt.Println("say hi") // 1. int to string - 숫자(정수)를 문자열로 변환 a := strconv.Itoa(100) fmt.Println("a: ", a) // a: 100 fmt.Println("type a: ", reflect.TypeOf(a)) // type a: string // 1-1. int to string - 100을 10진수 문자열로 변환 aa := strconv.FormatInt(100,..
안녕하세요. 오늘은 Golang에서 시간을 간단하게 변환하는 방법에 대해서 알아보겠습니다. 알아볼것 문자열 시간을 Time 타입으로 변경하는 방법 Time 타입의 시간을 특정포맷의 문자열로 변경하는 방법 시간차 구하는 방법 샘플코드 # 1. 문자열 시간을 Time 타입으로 변경하는 방법 currentTime := "2020-07-30" t, _ := time.Parse("2006-01-02", currentTime) fmt.Println(t) # 2. Time 타입의 시간을 특정포맷의 문자열로 변경하는 방법 a := t.Format("2006.01.02") fmt.Println(a) # 3. 시간차 구하는 방법 t2, _ := time.Parse("2006-01-02","2020-07-20") days ..