github.com/epsagon/epsagon-go@v1.39.0/example/generic_go_function/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  
     7  	"github.com/epsagon/epsagon-go/epsagon"
     8  )
     9  
    10  func doTask(a int, b string) (int, error) {
    11  	log.Printf("inside doTask: b = %s", b)
    12  	return a + 1, fmt.Errorf("boom")
    13  }
    14  
    15  func main() {
    16  	// Normal call
    17  	res, err := doTask(3, "world")
    18  	if err != nil {
    19  		log.Printf("First result is %d", res)
    20  	} else {
    21  		log.Printf("error was: %v", err)
    22  	}
    23  
    24  	// With Epsagon instrumentation
    25  	config := epsagon.NewTracerConfig("generic-go-wrapper", "")
    26  	config.Debug = true
    27  	response := epsagon.GoWrapper(config, doTask)(5, "hello")
    28  	res2 := response[0].Int()
    29  	errInterface := response[1].Interface()
    30  	if errInterface == nil {
    31  		log.Printf("Result was %d", res2)
    32  	} else {
    33  		err := errInterface.(error)
    34  		log.Printf("error was: %v", err)
    35  	}
    36  }