LANG/Golang
[Golang][Algo] Python으로 코딩하고 Go로 한번 더 풀기 -2- Trapping Rain Water
파이썬 알고리즘 인터뷰 책을 기반으로 풉니다. 파이썬 코드를 기반으로 Go언어로 한번 더 풉니다. LeetCode - trapping rain water Pseudo code 1. 각 인덱스마다 높이를 담는 Stack 생성, 물이 찬 용량 변수 생성 2. 전체 배열 크기만큼 Loop 2-1. 변곡점을 만나면 2-1-1. 스택에서 꺼낸다 (Pop) 2-1-2. 만약 Stack이 비어있으면, 한쪽이 없는 버킷형태 (즉,상향선 혹은 하향선이 하나만 있는 모양이다.) -> 루프 탈출 2-1-3. 이전과의 차이만큼 물 높이 처리하고 물 찬 용량에 더한다. 2-2. 변곡점이 아니면 Stack에 인덱스값을 쌓는다. 3. 물이 찬 용량 return Code package main import ( "fmt" "math"..
[Golang] Sqrt(Newton's Method)와 같이 Go언어 Custom Error처리 이해하기
Custom Error Handling 기존에 언어를 배웠던 것과는 Go언어는 다른점이 많기도 하다. Python에서의 try ~ except와는 다르게 Error를 인터페이스로 제공하고 이를 사용하기 위해서는 Method를 통해서 구현해서 사용하거나 따로 제공되는 errorString이나 errors 패키지를 import하여 New()함수를 통하는 방법도 있다. 처음 공부하는 부분이기도 하고, 가장 기본적으로 Error를 다루기 위해서 error 인터페이스의 메서드를 구현하고 이를 Custom해서 Error를 처리하도록 생각했다. (차후, Go를 이용해 다양한 프로젝트 아마.. Http 패키지를 써서 서버를 띄우거나, Go를 이용한 BlockChain에도 관심이 있어서 해볼 예정이다. 에러는 매번 중요..
[Golang] 헷갈리는 Type assertion 이해하기
Type-Switch에서도 쓰기도하고, empty interface를 자주 사용되는 부분에서 type assertion은 확실히 이해하고 넘어가야겠다고 생각했다. 결론부터 말하자면, Type Assertion은 interface type의 value의 Type을 확인하는 것이다. 말이 조금 이상할 수 있지만, 아래의 설명과 예시와 함께라면 이해하기에 충분하다🤔 Type Assertion interface type의 x 와 타입 T를 → x.(T)로 포현했을때, x가 nil 이 아니며, x는 T 타입에 속한다는 점을 확인하기(assert)하는 것으로 이러한 표현을 Type assertion 이라고 부른다. x 가 nil 이거나 x의 타입이 T가 아니라면 → Runtime ERROR x 가 T 타입인 경우 ..
[Golang] cannot type switch on non-interface value v (type int)
Type Switch 공부하면서 나온 ERROR이다. 단순히 생각해서 Switch문의 변수의 Type을 확인한다고 생각해서 아래와 같이 간단하게 Test를 진행해보았는데 value v가 Interface Value가 아니라고 한다. package main func main() { var v int = 10 switch v.(type) { case int: println("int") case bool: println("bool") case string: println("string") default: println("unknown") } } func do(i interface()) {} 는, -> 빈 인터페이스(empty interface)를 파라미터로하는 함수를 정의한다. 이 함수는 입력받는 Parame..