본문 바로가기

map5

Go - reflection - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/reflection - 개요 reflect package에 대해 알아본다. struct x을 받고 fn을 호출해서 재귀적으로 내부의 string field들을 모두 순회하는 함수 walk(x interface{}, fn func(string))를 작성해보자. 이번 챕터에서는 이 요구사항을 구현하기위해 reflection을 사용해볼것이다. - interface 여태까지는 string, int 형 처럼 Go에서 제공하거나, BankAccount와 같이 형을 정의한 type-safety만 다루었다. 그래서 참조할 문서를 쉽게 찾을 수 있었고, 만약 잘못된 형을 함수에 넘기면 컴파일러가 이를 미.. 2022. 1. 15.
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 - multiple input 과 return 참조: https://go.dev/doc/tutorial/greetings-multiple-people - 개요 이번에는 여러 개의 이름을 함수로 넘겨서 각 이름에 대한 인삿말을 반환하도록 코드를 수정해보자. - slice와 map 지금은 학습을 목적으로 코드를 작성하고 있으므로 Hello 함수의 인자와 반환형을 곧바로 변경해도 큰일이 일어나지 않는다. 그래도 좀 더 그럴싸한 상황을 가정해서 이미 greetings 모듈이 배포되어 사용하고 있다고 가정해보자. 이럴 때 Hello 함수의 인자와 반환형을 변경해서 배포해버리면 기존 사용자들의 프로그램이 제대로 동작하지 않을 수 있다. 이런 상황에서는 여러 인삿말을 반환하는 신규 함수를 추가해야 한다. 이렇게 하면 기존 함수의 호환성을 그대로 유지할 수 있다... 2021. 11. 28.
[Java 8] Optional - 출처: https://www.oracle.com/technical-resources/articles/java/java8-optional.html - Optional Optional은 코드를 더 가독성있게 해주고 null pointer exception(이하 "NPE") 로 부터 보호해준다. null 참조는 값의 부재를 나타내기 때문에 많은 문제의 원인이 된다. Java SE 8 에서는 이런 문제를 완화할 수 있도록 java.util.Optional 이라 불리는 새로운 클래스를 선보였다. 아래와 같이 중첩된 객체구조를 지닌 Computer 가 있다고 가정해보자. version을 알기 위해서 아래와 같이 코드를 작성했다고 가정해보자. String version = computer.getSoundcard(.. 2021. 2. 11.
[Java 8] Stream - 2 (기본 연산) - 출처: https://www.oracle.com/technical-resources/articles/java/ma14-java-se-8-streams.html - Stream 연산 java.util.stream.Stream 에 정의되어 있는 Stream 인터페이스는 많은 연산들을 정의하고 있는데, 크게 2 부분으로 나눌 수 있다. filter, sorted, map 와 같이 파이프라인으로 서로 연결될 수 있는 형태 파이프라인을 종결시키고, 결과를 반환하는 collect 연결될 수 있는 Stream 연산자들을 "중간 연산자" 라고 칭한다. 해당 연산자들은 반환형이 Stream 형이기 때문에 서로 연결될 수 있다. Stream 파이프라인을 종결시키는 연산자들은 "종결 연산자" 라고 칭한다. 종결 연산자는.. 2021. 2. 11.