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)
}
`