joplin-notes/joplin notion extension/Web Development/Go/extras.md
2026-11-04 00:33:23 +05:30

50 lines
No EOL
1.4 KiB
Markdown

extras
- to get type of variable
`fmt.Println(reflect.TypeOf(student))`
- for signals
`signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt)`
- sc — a chan os.Signal (must be buffered, e.g. make(chan os.Signal, 1)) that will receive the signal values.
- syscall.SIGINT — interrupt from the keyboard (Ctrl+C).
- syscall.SIGTERM — polite termination request (e.g. kill <pid> or what Kubernetes sends on pod shutdown).
- os.Interrupt — a platform-agnostic alias; on Unix it's the same as syscall.SIGINT, on Windows it also covers Ctrl+Break.
&nbsp;
for deeply mested objects printing in console
```go
data, _ := json.MarshalIndent(m, "", " ")
fmt.Printf("detected: %v\n", string(data))
```
&nbsp;
go equivalent to `fs.mkdirSync(dirPath,{recursive: true}`
this will create directories recurselovely and wont throw error if it exist
```go
err := os.MkdirAll(dirPath, 0755)
```
creating a build for all platfoms
script
```sh
#!/bin/bash
# Iterate through all supported GOOS/GOARCH combinations
go tool dist list | while read platform; do
# Split platform into OS and ARCH
GOOS=${platform%/*}
GOARCH=${platform#*/}
# Define output filename
output_name="myapp-${GOOS}-${GOARCH}"
if [ "$GOOS" = "windows" ]; then
output_name+=".exe"
fi
# Build the binary
env GOOS=$GOOS GOARCH=$GOARCH go build -o "$output_name" .
done
```