동시성, ‘고루틴(goroutines)(https://jokerkwu.tistory.com/184파이썬 등의 스크립팅 언어와 달리 고 코드는 빠르게 실행되는 네이티브 바이너리로 컴파일된다. 또한 C나 C++과 달리 고의 컴파일 속도는 매우 빨라서 고로 작업하다
2007년도 구글에서 개발을 시작하여 2012년도 1.0버전을 완성하였습니다.계속 향상된 버전을 내 놓으며 2022초 1.18버전에 이르렀습니다.golang이라 불리는 Go 프로그래밍 언어는 구글의 V8 Javascript 엔진 개발에 참여했던 Robert Griese
패키지 경로를 잘 맞추어 설정 했음에도 불구하고 GOROOT는 해당 패키지를 찾을 수 없다는 애러를 만났다.모듈을 설정하면 되는 것 같아서 go mod init을 하였지만 GOPATH outside 에러를 만났다.그 이유는 go.mod를 GOPATH대신 디폴트로 사용하
위와 같은 코드를 실행했다고 한다면, x, y, z 값의 평가 처리는 현재의 goroutine에서 일어나고 f의 실행은 새로운 goroutine에서 일어납니다.goroutine은 같은 주소의 공간에서 실행되며 공유된 메모리는 synchronous(동기적)해야합니다. 함
channel은 채널 연산지인 <-를 통해 값을 주고 받을 수 있는 하나의 분리된 통로입니다.channel은 map과 slice처럼 사용하기 전에 생성되어야만 합니다.기본적으로 전송과 수신은 다른 한 쪽이 준비될 때까지 block상태입니다.이는 명시적인 lock이
전송자는 더이상 보낼 데이터가 없다는 것을 암시하기 위해 channel을 close할 수 있습니다. 수신자는 수신에 대한 표현에 두 번째 매개변수를 할당함으로써 채널이 닫혔는지 테스트 할 수 있습니다.만약 더 수신할 값이 없고, channel이 닫혀있다면 ok의 값은
Goroutine이 다중 커뮤니케이션 연산에서 대기할 수 있게 합니다. select는 케이스 중 하나가 실행될 수 있을 때까지 block합니다.그 후 해당 케이스를 실행합니다. 여러 개가 준비되면 무작위로 하나를 선택합니다.fibonacci(c, quit) 이 함수를
select에서 default 값이 준비되지 않았을 때 실행됩니다. 다른 언어의 switch구문과 매우 유사합니다.
이진 트리 속에 저장된 값들의 순서가 같은 많은 각각의 이진 트리들이 존재할 수 있습니다. 예를 들어 여기 두 1, 1, 2, 3, 5, 8, 13의 순서를 가진 이진 트리가 있습니다.두 이진트리가 동일한 순서를 가졌는 지를 체크하는 함수는 대부분의 언어에서 꽤나 복잡
특정 디렉토리에 log 파일이 쌓인다면 해당파일을 분석하고 처리 및 저장하는 기능이 필요하다고 가정해보자monitoring 하고있는 디렉토리에 파일이 추가되었는지 확인해당 디렉토리의 파일들을 다른 디렉토리로 옮기기환경 변수로 monitoring할 dir의 경로를 받아온
Go에는 기본 log package인 "log"를 지원합니다.log file에 직접 입력하거나, 출력하는 정도의 코드입니다.Go 표준 로거는 구현하기 쉬운 만큼 로그 수준이 제한되어 있습니다.그렇기에, 더 다양한 기능 (log를 level단위로 보여주는)을 제공하며 빠
go를 향한 여행을 따라가던 중, 이진트리를 비교하는 문제를 만났다.문제를 읽어보았을 때, Tree를 이해하고자 하였고, 이 사이트에서 구조를 파악할 수 있었다.Tree는 주어진 수의 배수를 10개의 값으로 갖는 트리를 생성하는 New와 트리 구조를 출력하는 Strin
Check함수는 저의 package내에 선언한 local함수입니다.이 코드는 sql=select \* from SMS_PREFIX_RN_MAN 문자열을 리턴합니다.이러한 방식으로 url 인코딩을 해주지 않으면 요청시 공백 부분이나 한글이 섞일 시 제대로 처리가 안될 수
make를 사용하여 초기화 하다가 channel도 아니고 map을 왜 make로 해야하나? 라는 생긱에 일반 선언으로 코드를 작성하였더니 에러가 발생하였습니다....itemMap에는 적당한 값이 있다 가정합니다.panic err 문구를 보면 nil map에 접근한다고
모든 Go 프로그램은 패키지로 구성되어 있습니다.관습적으로 패키지의 이름은 import 경로의 마지막 요소와 같습니다.예를 들어 "math/rand" 패키지는 package rand 문으로 시작하는 파일들로 구성되어있습니다.기존 c, c++ 등에서 header file
Flowcontrol for 기본 Go는 for 반복문이라는 단 하나의 반복 구조를 가집니다. for 문 구성 요소는 3개로 나뉘며 c언어에서 사용하는 방법과 동일합니다. > 초기화 구문: 첫 번째 iteration 전에 수행됩니다. 조건 표현: 매 모든 iterat
Go에서는 database/sql package를 위한 MySQL 드라이버인 mysql package를 제공합니다.Go MySQL Driver는 Go의 database/sql/driver인터페이스를 구현한 것입니다. 드라이버를 가져오기만 하면 전체 database/sq
Go 에서는 예상치 못한 에러가 발생했을 때 panic이 발생합니다.이 때 process가 종료되게되는데 panic시 프로세스가 종료되지 않도록 해주는 함수가 recover()입니다.프로세스 강제 종료를 막기 위해 시도하였으나 process가 계속 죽어서 제대로 pan
Go에선 새로운 객체를 생성할 때 이러한 방식으로 할당을 하여 사용하는 것을 보고 의문이 들어 찾아보았습니다.C에선 함수 내 Local 변수를 리턴하여 받게되면, 스택 영역에 할당되어서 메모리 참조 이슈를 겪게되기 때문입니다.하지만 Golang에선 Escape Anal