You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.1 KiB

package utils
6 years ago
import (
"strings"
"unsafe"
"github.com/labstack/echo"
)
// Bytes2String see below
func Bytes2String(b []byte) (s string) {
return *(*string)(unsafe.Pointer(&b))
// pb := (*reflect.SliceHeader)(unsafe.Pointer(&b))
// ps := (*reflect.StringHeader)(unsafe.Pointer(&s))
// ps.Data = pb.Data
// ps.Len = pb.Len
// return
}
// String2Bytes zero-coy, string类型转为[]byte
// 注意这种做法下一旦string变化程序立马崩溃且不能recover
// 谨慎,黑科技!!除非性能瓶颈,否则请使用[]byte(s)
func String2Bytes(s string) (b []byte) {
return *(*[]byte)(unsafe.Pointer(&s))
// pb := (*reflect.SliceHeader)(unsafe.Pointer(&b))
// ps := (*reflect.StringHeader)(unsafe.Pointer(&s))
// pb.Data = ps.Data
// pb.Len = ps.Len
// pb.Cap = ps.Len
// return
}
// ValidNameRune check a rune is valid for a name format
func ValidNameRune(c rune) bool {
// only a-z A-Z - is valid
if (c >= 97 && c <= 122) || (c >= 65 && c <= 90) || c == 95 {
return true
}
return false
}
6 years ago
// FormValue get value from http form
func FormValue(c echo.Context, k string) string {
return strings.TrimSpace(c.FormValue(k))
}