geth (이더리움 go client)를 분석 수정하려면, go언어 공부가 필요하다.


[go 언어]


  - 설치: https://golang.org/dl/
  - 편집: IntelliJ + go sdk plug-in 추천  

  - 환경변수: GOPATH  -  workspace 위치
                    GOROOT - go실행파일이 설치된 경로    

                    $go env 로 환경변수 확인가능

  - 학습사이트:  REF




[c와 java/javascript 익숙자 기준 go언어의 차이]


변수Type  (다양한 길이별로 지정이 가능하다)

- int int8~int64, uint uint8~uint64 uintptr, float32 float64 complex64 complex128

- rune: int32과 동일하며 유니코드 코드포인트에 사용


문자열 (java의 단점이던 멀티라인 문자열 지원)

- '원어퍼스트로피' 를 사용하면, 멀티라인 스트링이 되고, 그 안에 있는 \n등도 해석하지 않고 그대로 사용.

 

포인터 지원 (c처럼 &, * 를 통한 포인터 지원)


함수 (1st class함수)

-  javascript처럼 함수를 파라미터로 넘길 수 있음

-  javascript처럼 closure방식 함수 사용 가능


패키지 (java 처럼 pkg단위로 모듈관리)

- 디폴트 pkg 위치는 GOROOT/pkg 참조

- pkg는 init() 함수를 가질 수 있고, 임포트시에 _ 를 붙이면 임포트 안하고 init()만 호출한다.


defer / panic / recover

- defer는 java의 finally와 비슷하게 최종적으로 실행이 됨

- panic은 c의 exit같은 개념인데, defer함수들은 다 실행하면서 종료함. (좋아 보임)

- panic상태를 recover()릍 통해 회복도 가능







Posted by yongary
,