Go常用知识点整合
原文链接: Go常用知识点整合
文件
1.创建文件
os.Create(filename)
2.打开文件
1)只读
os.OpenFile(filename, os.O_RDONLY, os.ModePerm)
2)写入
f, err := os.OpenFile(filename, os.O_WRONLY, os.ModePerm)
3)追加
os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
3.判断文件是否存在
if _, err := os.Stat(filename); os.IsNotExist(err) {
f, _ = os.Create(filename)
}
4.写文件
//Write方法写入
f.Write([]byte(content))
//Writestring方法写入
f.WriteString(content)
HTTP 请求
1.Get请求
resp, err := http.Get(url)
//关闭连接
defer resp.Body.Close()
//读取内容
body, err := ioutil.ReadAll(resp.Body)
2.Post请求
resp, err := http.Post(url,"application/x-www-form-urlencoded",strings.NewReader("name=1&pwd=2")
//关闭连接
defer resp.Body.Close()
//读取内容
body, err := ioutil.ReadAll(resp.Body)
时间
1.时间戳
time.Now().Unix()
2.日期转换
time.Now().Local().Format("2006-01-02 15:04:05.000")
3.定时器
t := time.Tick(1 * time.Second)
go onTime(t)
加密
Md5加密
h := md5.New()
h.Write([]byte(s))
hex.EncodeToString(h.Sum(nil))
/* File MD5 */
filedat_t, _ := ioutil.ReadFile(cfg.Directories.Upload + diskid + "/" + filename)
md5_t := md5.New()
md5_t.Write(filedat_t)
fmt.Fprintf(w, "md5: %x\n", md5_t.Sum(nil))
sha1_t := sha1.New()
sha1_t.Write(filedat_t)
fmt.Fprintf(w, "sha1: %x\n", sha1_t.Sum(nil))
JSON互转Map
//数据转换为json字符串
json.Marshal(data)
//解析json
data := make(map[string]interface{})
json.Unmarshal([]byte(body), &data)
数据库mysql操作
查询
type User struct{
Id int
Name string
}
rows, err := db.Query("SELECT id,name FROM users")
var u User
for rows.Next(){
rows.Scan(&u.Id, &u.Name)
}
exec
out, err := exec.Command("file", "-biL", cfg.Directories.Upload+diskid).Output()
RandString
// RandString returns random string of n length.
func RandString(n int) string {
p := make([]byte, n/2)
rand.Read(p)
return hex.EncodeToString(p)
}