代码拉取完成,页面将自动刷新
同步操作将从 zhuzhenping/hf_goctp 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package goctp
import (
"bytes"
"errors"
"fmt"
"reflect"
"strings"
"text/template"
"golang.org/x/text/encoding/simplifiedchinese"
)
func CheckErr(err error) {
if err != nil {
fmt.Println(err)
panic(err)
}
}
func TemplateMap(templateString string, mapContent map[string]string) string {
t := template.Must(template.New("fun").Parse(templateString))
buf := &bytes.Buffer{}
CheckErr(t.Execute(buf, mapContent))
return buf.String()
}
func Bytes2String(t []byte) string {
msg, _ := simplifiedchinese.GB18030.NewDecoder().Bytes(t)
return strings.Trim(string(msg), "\u0000")
}
//func GB18030ToUtf8(s []byte) ([]byte, error) {
// reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GB18030.NewDecoder())
// d, e := ioutil.ReadAll(reader)
// if e != nil {
// return nil, e
// }
// return d, nil
//}
//
//func Utf8ToGbk(s []byte) ([]byte, error) {
// reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewEncoder())
// d, e := ioutil.ReadAll(reader)
// if e != nil {
// return nil, e
// }
// return d, nil
//}
// 判断obj是否在target中,target支持的类型 arrary, slice, map
func Contain(obj interface{}, target interface{}) (bool, error) {
targetValue := reflect.ValueOf(target)
switch reflect.TypeOf(target).Kind() {
case reflect.Slice, reflect.Array:
for i := 0; i < targetValue.Len(); i++ {
if targetValue.Index(i).Interface() == obj {
return true, nil
}
}
case reflect.Map:
if targetValue.MapIndex(reflect.ValueOf(obj)).IsValid() {
return true, nil
}
}
return false, errors.New("not in array")
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。