본문 바로가기

make4

Effective Go - New 와 Make - 출처: https://go.dev/doc/effective_go#data - New Go에서 할당에 관한 primitive에는 new와 make 2 가지 built-in 함수가 존재한다. new는 메모리를 할당한다. 다른 언어의 new와는 다르게 메모리를 초기화하지 않고, 단순히 "zero"화 한다. new(T) 는 T형의 새로운 요소를 위해 zero화된 공간을 할당하고, type *T 값인 해당 주소를 반환한다. Go 용어로 type T의 새롭게 할당된 zero 값에 대한 pointer를 반환한다. new에 의해 반환된 메모리가 zero화 되기 때문에, 추가적인 초기화 없이 각 type의 zero값이 사용될 수 있는 data 구조를 설계할 때 유용하다. 이를 잘 사용할 경우 해당 data 구조를 사.. 2022. 5. 7.
Go - maps - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/maps - 개요 array와 slice에서는 데이터를 순차적으로 저장한다. go에서는 key를 기반으로 데이터를 저장할 수 있는 map을 제공한다. dictionary를 만들어 보면서 map에 대해 알아보도록 하자. - map package main import "testing" func TestSearch(t *testing.T) { dictionary := map[string]string{"test": "this is just a test"} got := Search(dictionary, "test") want := "this is just a test" if got != want .. 2021. 12. 31.
Go - array, slice, test coverage 참조: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/arrays-and-slices - 개요 Go 에서 하나의 데이터 타입을 여러 개 저장할 수 있는 array 와 slice 에 대하여 알아본다. 또한 test coverage 와 array, slice 를 비교하는 reflect.DeepEqual 에 대해서도 알아본다. - Array & Slice Example array 의 수를 모두 더하면 얼마인지 구하는 기능을 구현해보자. 기능을 완성하고 나면 아래와 같이 array 를 인자로 받아서 단일값으로 반환하는 Sum 과 같은 함수를 호출할 것이다. test 값은 1,2,3,4,5 의 합이므로 기대값은 15이다. package main impo.. 2021. 12. 4.
Go - multiple input 과 return 참조: https://go.dev/doc/tutorial/greetings-multiple-people - 개요 이번에는 여러 개의 이름을 함수로 넘겨서 각 이름에 대한 인삿말을 반환하도록 코드를 수정해보자. - slice와 map 지금은 학습을 목적으로 코드를 작성하고 있으므로 Hello 함수의 인자와 반환형을 곧바로 변경해도 큰일이 일어나지 않는다. 그래도 좀 더 그럴싸한 상황을 가정해서 이미 greetings 모듈이 배포되어 사용하고 있다고 가정해보자. 이럴 때 Hello 함수의 인자와 반환형을 변경해서 배포해버리면 기존 사용자들의 프로그램이 제대로 동작하지 않을 수 있다. 이런 상황에서는 여러 인삿말을 반환하는 신규 함수를 추가해야 한다. 이렇게 하면 기존 함수의 호환성을 그대로 유지할 수 있다... 2021. 11. 28.