go 4

type conversion과 type assertion의 차이

v1 := int(n) // type conversion v2, ok := n.(int) // type assertion v1도 정수이고 v2도 정수일 것이다(에러가 나지 않는다면). 위 두 줄의 코드는 어떻게 다른가? 1. type conversion type casting이다. Golang에서는 명시적으로 형변환을 해줘야 한다. 자동으로 형변환을 해주는 일 따위는 없다. 예를 들어, int형을 int64형으로 바꾸고 싶다면 아래와 같이 명시적으로 코드를 작성해야 한다. var n int = 15 var v1 int64 = int64(n) 데이터 타입이 A인 것을 A가 아닌 다른 타입으로 바꾸는 것이다. 2. type assertion 네이버 영영사전에서 assert의 뜻을 찾아보면, 첫 번째 의미가 ..

프로그래밍 2020.02.24

golang module을 사용해보자.

golang으로 작업을 하면서 팀원분이 go module를 사용해보라고 하셨다. 분명 수많은 사람들이 쉽게 go module를 사용하는데, 뭔가 잘 되지 않아서 앓고 있었는데 알고보니 내가 2018년도 글을 보고 있었다. 미래의 나 & 다른 사람들이 삽질하지 않기를 바라며, 몹시 간단한 일이지만 그래도 적어둔다. 일단 프로젝트 폴더가 $GOPATH/src 밖에 있는지 확인하자. 밖에 있다면, 프로젝트 최상위 디렉토리에서 대략 아래와 같은 형태로 명령어를 실행한다. go mod init example.com/m golang 블로그에도 go module 사용방법에 대한 글이 있고, 저런 식으로 예시를 드는데 example.com이 무엇을 의미하는지 알 수가 없어서 혼란스러웠다. JAVA 같은 언어를 사용해 ..

프로그래밍 2020.02.21

A Tour of Go Exercise - Web Crawler 풀이

튜토리얼 자체에서는 WaitGroup에 대한 설명은 없는데, WaitGroup을 써서 풀었다. 출제자는 아마 채널을 이용해서 풀기를 의도했던 게 아닐까 싶다. 코드는 여기서 실행해볼 수 있다. https://play.golang.org/p/Rm6J-yLHR5j The Go Playground package main import ( "fmt" "sync" ) type Fetcher interface { // Fetch returns the body of URL and // a slice of URLs found on that page. Fetch(url string) (body string, urls []string, err error) } // Crawl uses fetcher to recursively..

프로그래밍 2020.02.11

golang 에서 nil 이란 무엇인가

결론 - zero value는 명시적인 초기값을 할당하지 않고 변수를 만들었을 때 해당 변수가 갖게 되는 값이다. - nil은 포인터, 인터페이스, 맵, 슬라이스, 채널, 함수의 zero value이다. 그저 어떤 값이 빈 값인지(파이썬으로 치자면 None인지)확인하고 싶은데, 뜬금없이 컴파일 에러가 날 때가 있다. 왜 이런 일이 발생하는지 알기 위해서는 golang에서 nil이 무엇인지 알아야 한다. 우리의 친구 스택오버플로에는 이미 누군가 동일한 질문을 올려놨고, 누군가 고마운 분이 답변을 달아놓았다. https://stackoverflow.com/questions/35983118/what-does-nil-mean-in-golang What does nil mean in golang? There ar..

프로그래밍 2020.02.11
반응형