https://github.com/visualfc/funcval
golang runtime funcval extract
https://github.com/visualfc/funcval
Last synced: 8 days ago
JSON representation
golang runtime funcval extract
- Host: GitHub
- URL: https://github.com/visualfc/funcval
- Owner: visualfc
- License: apache-2.0
- Created: 2022-04-14T07:51:49.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-08-01T14:28:33.000Z (over 2 years ago)
- Last Synced: 2025-01-17T09:47:25.262Z (over 1 year ago)
- Language: Go
- Size: 18.6 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# funcval
golang runtime funcval extract
[](https://github.com/visualfc/funcval/actions/workflows/go114.yml)
[](https://github.com/visualfc/funcval/actions/workflows/go115.yml)
[](https://github.com/visualfc/funcval/actions/workflows/go116.yml)
[](https://github.com/visualfc/funcval/actions/workflows/go117.yml)
[](https://github.com/visualfc/funcval/actions/workflows/go118.yml)
### extract closure env variable
_func Get(fn interface{}) (fv *FuncVal, makefunc int)_
```
package main
import (
"unsafe"
"github.com/visualfc/funcval"
)
func main() {
a := 1
b := "hello"
c := 10
fn := func() {
println(a, b, c)
}
c = 20
fv, _ := funcval.Get(fn)
type closure struct {
funcval.FuncVal
a int
b string
c *int
}
env := (*closure)(unsafe.Pointer(fv))
println(env.a, env.b, *env.c)
}
```