$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
[Go]解决使用cgo时 exec:“gcc” executable file not found in %PATH%报错问题
phper 过度 golang php2go
json转化结构json-to-go/
初始化模块,为 go get 做准备
go mod init
linux:
go env -w GOPROXY=https://goproxy.cn
GO111MODULE=on
go get -u github.com/cosmtrek/air
windows
github.com/cosmtrek/air/releases 下载exe 到go 的bin 目录
go install github.com/cosmtrek/air@latest
执行: air
保留两位小数
fmt.Sprintf("%.2f", 180.567)
重定向
http.Redirect(w,r,"http://baidu.com",http.StatusMovedPermanently)
获取表单值
r.PostFormValue("title")
github.com/gorilla/mux
用法
//中间件方法
func forceHTMLMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// 1. 设置标头
w.Header().Set("Content-Type", "text/html; charset=utf-8")
// 2. 继续处理请求
next.ServeHTTP(w, r)
})
}
//方法包括获取参数
func articlesShowHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
id := vars["id"]
fmt.Fprint(w, "文章 ID:"+id)
}
//构造对象
router := mux.NewRouter()
//匹配路由
router.HandleFunc("/articles/{id:[0-9]+}", articlesShowHandler).Methods("GET").Name("articles.show")
//获取并匹配 url
articleURL, _ := router.Get("articles.show").URL("id", "23")
//处理中间件
router.Use(forceHTMLMiddleware)
// 处理404页面
router.NotFoundHandler = http.HandlerFunc(notFoundHandler)
http.ListenAndServe(":3000", router)
修剪末尾的字符串,比如要删除字符串末尾的逗号
strings.TrimSuffix("1,1,2,", ",")
判断字符串长度len
可以判断,但是发现判断中文会多出来一个中文三个字符串,可以用 utf8.RuneCountInString
判断中文
替换 func Replace(s, old, new string, n int) string
例子: strings.Replace(name, ".", "/", -1)
n 是允许替换的次数,设置为 -1 意味着替换所有。
赋值 view
tmpl, err := template.ParseFiles("resources/views/articles/create.gohtml")
if err != nil {
panic(err)
}
data:=ArticlesFormData{
Title: "",
Body: "",
URL: storeURL,
Errors: nil,
}
tmpl.Execute(w, data)
//判断
{{if pipeline}} T1 {{end}}
{{if pipeline}} T1 {{else}} T0 {{end}}
{{if pipeline}} T1 {{else if pipeline}} T0 {{end}}
//循环
<ul>
{{ range $key, $article := . }}
<li><a href=""><strong>{{ $article.ID }}</strong>: {{ $article.Title }}</a></li>
{{ end }}
</ul>
把int64 转化为字符串
fmt.Fprint(w, "插入成功,ID 为"+strconv.FormatInt(lastInsertID, 10))
名称 | 说明 |
---|---|
Go并发:利用sync.WaitGroup实现协程同步 | https://blog.csdn.net/u011304970/article/details/72722044 |
Go sync.WaitGroup的用法 | https://blog.csdn.net/u013474436/article/details/88749749 |
Golang 之协程详解 | https://www.cnblogs.com/liang1101/p/7285955.html |
协程并发和锁的关系 | https://www.jb51.net/article/202281.htm |
浅析runtime包中的三个方法Gosched、Goexit、GOMAXPROCS | https://blog.51cto.com/u_12732447/2432726 |
return ioutil.WriteFile(filename, []byte(data), mode)
结构体转化为json
jsons, errs := json.Marshal(res)
fmt.Println(string(jsons))
json转化为结构
errs = json.Unmarshal(jsons, &res2)
if errs != nil {
fmt.Println("json unmarshal error:", errs)
}
https://www.jianshu.com/p/39b584b47260