Spaces:
Running
Running
package tools | |
import ( | |
jsoniter "github.com/json-iterator/go" | |
"os" | |
"os/signal" | |
"syscall" | |
) | |
func HandleSignals(exitCode int) int { | |
s := make(chan os.Signal) | |
signal.Notify(s, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) | |
EXIT: | |
for { | |
switch <-s { | |
case syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT: | |
exitCode = 0 | |
break EXIT | |
case syscall.SIGHUP: | |
default: | |
break EXIT | |
} | |
} | |
return exitCode | |
} | |
// Struct2Bytes 将结构体转换为字节数组 | |
func Struct2Bytes(v interface{}) ([]byte, error) { | |
// 创建一个jsonIter的Encoder | |
configCompatibleWithStandardLibrary := jsoniter.ConfigCompatibleWithStandardLibrary | |
// 将结构体转换为JSON文本并保持顺序 | |
bytes_, err := configCompatibleWithStandardLibrary.Marshal(v) | |
if err != nil { | |
return nil, err | |
} | |
return bytes_, nil | |
} | |
// Bytes2Struct 将字节数组转换为结构体 | |
func Bytes2Struct(data []byte, v interface{}) error { | |
// 创建一个jsonIter的Decoder | |
configCompatibleWithStandardLibrary := jsoniter.ConfigCompatibleWithStandardLibrary | |
// 将JSON字节数组解码为结构体 | |
err := configCompatibleWithStandardLibrary.Unmarshal(data, v) | |
if err != nil { | |
return err | |
} | |
return nil | |
} | |