![](https://tistory1.daumcdn.net/tistory/6400909/skin/images/middle-flow.png)
![](https://tistory1.daumcdn.net/tistory/6400909/skin/images/middle-flow1.png)
![](https://tistory1.daumcdn.net/tistory/6400909/skin/images/middle-flow3.png)
![](https://tistory1.daumcdn.net/tistory/6400909/skin/images/middle-flow4.png)
![](https://tistory1.daumcdn.net/tistory/6400909/skin/images/middle-flow5.png)
![](https://tistory1.daumcdn.net/tistory/6400909/skin/images/middle-back.png)
golang(3)
-
인터페이스 구현 검증
코드를 보다 보면var _ SomeInterface = &SomeStruct{}이런 식으로 표현되어 있는 것을 종종 본적이 있을 것이다. Golang의 interface는 덕 타이핑을 사용하여 interface 내에 선언된 method들의 실제 구현 없이 method명만 언급되어도 된다.예를 들어 SomeInterface가 아래와 같은 method명 들을 가지고 있다고 가정하자.type SomeInterface interface { GetHomeDir() string GetApp(string) *types.App GetNumber() (*big.Int, error)}이 때 코드 내에 var _ SomeInterface = &SomeStruct{}로 명시된 상황에서 SomeStruct가 r..
2024.11.14 -
Golang을 이용하여 Solidity smart contract 다루기
보통 Solidity 스마트 컨트랙트를 다룰때는 JS로 되어있는 web3.js나 ethers.js를 사용하여 interaction 하고, 배포시에는 hardhat, truffle을 사용한다. 이들은 모두 javascript 기반이다. 다른 언어를 사용하여 프로그램을 개발한다면 언어 호환에 대한 고민이 있을 수 있다. Go-ethereum에서는 Golang을 기반으로 하는 서버 등의 프로그램에서 다른 언어로 이루어진 라이브러리를 사용하지 않고도 쉽고 편리하게 Solidity 컨트랙트를 다룰 수 있게 하는 기능을 제공하기 때문에 이번 페이지에서는 해당 기능을 소개하고 사용하는 방법에 대해 작성하여 한다.Bind packageGeth는 "bind" package가 존재한다. 해당 패키지의 directory는 ..
2024.11.13 -
프로그램에서 동작 중인 goroutines 확인
Golang으로 개발하다 보면 goroutine을 자주 사용할 수 밖에 없고, 멀티 쓰레드 간 채널을 통해 데이터를 자주 받아야 하는 상황이 잦을것이다. 이 때 송수신 채널들이 데이터를 주고 받지 못하던지, goroutine이 동작하지 않는다던지 하는 다양한 이유로 goroutine의 생사 여부를 확인해야 하는 과정이 필요할 수 있다. 간단하게 확인하는 방법을 공유한다.Golang 디버깅 프로그램 dlv를 설치하고, 제대로 설치되어 있는지 버전을 확인한다.$ go install github.com/go-delve/delve/cmd/dlv@latest$ dlv versionGoroutine 동작을 확인하려 하는 대상인, 내가 구동시키고 있는 프로그램의 PID를 확인한다.$ ps -ef | grep PROG..
2024.11.13