package main
import (
"fmt"
"runtime"
"strconv"
"strings"
"time"
)
func main() {
go func() {
id1, err := GetGoroutineID()
if err != nil {
fmt.Println(err)
}
fmt.Println(id1)
}()
go func() {
id1, err := GetGoroutineID()
if err != nil {
fmt.Println(err)
}
fmt.Println(id1)
}()
time.Sleep(1 * time.Second)
//18
//19
}
func GetGoroutineID() (int, error) {
var buf [64]byte
n := runtime.Stack(buf[:], false)
field := strings.Fields(strings.TrimPrefix(string(buf[:n]), "goroutine "))[0]
return strconv.Atoi(field)
}