介绍
Golang 学习开始!
目标:编写一个golang web项目 goblog
以下博文需要你懂一些基本的编程知识 如:对象 if switch 变量….
以下博文都是为了这个目标而编写….
Golang 创建一个简单的web程序
注意:golang程序中只能使用 “”双引号
使用golang基本库fmt
net/http
import ("fmt""net/http"
)
创建文件main.go
这个文件是go 程序的入口文件必须定义
// main文件必须定义 package main代表其是入口文件
// 接下来的代码示例将省略这个文件头 用...表示
package main
// 你的代码业务逻辑
func main() {
}
使用net/http
创建一个简单的web程序 输出:hello golang
...
// 另一个写法 import "net/http" 只引入一个包、库
import {"net/http""fmt"
}
// 处理请求 w & r 代表此方法必须实现的两个参数
// http.ResponseWriter 这个你需要响应的对象 例如 fmt.Fprint(w,"hello golang")
// http.Request 这个是客户端的请求信息
func handleFunc(w http.ResponseWriter, r *http.Request){// 响应请求 并写入响应信息
fmt.Fprint(w,"hello golang")
}
func main() {// ‘/’ 可理解为 ‘根’请求
http.HandleFunc("/",handleFunc)// 8080为监听端口 nil暂时可不管
http.listenAndServe(":8080",nil)
}
路由
上面的例子我们编写了一个简单的web程序 我们现在来给这个程序添加一些路由让这个程序响应不同的请求
...
func handlerFunc(w http.ResponseWriter, r *http.Request){// 定义一个变量 // golang和PHP的不同是 单独定义变量必须定义变量类型 // 下面的代码可以写成 Wstr := "" 可省略 var 关键字var Wstr string
// r http.Request 在该对象中取出用户的请求链接// 这里不建议使用if(条件太多没法记) switch r.URL.Path {case "/":
Wstr = "<h1>Hello, 这里是 goblog!</h1>"breakcase "/about":
Wstr = "此博客是用以记录编程笔记,如您有反馈或建议,请联系 "+"<a href=\"mailto:summer@example.com\">summer@example.com</a>"breakdefault:
Wstr = "<h1>请求页面未找到 :(</h1>"+"<p>如有疑惑,请联系我们。</p>"}
// 打印信息到请求
fmt.Fprint(w,Wstr)
}
...
响应类型及状态码 Content-Type 参考
// 响应404// http.StatusNotFound 为http包 预定义的状态码 你也可以写成这样 w.WriteHeader(404)
w.WriteHeader(http.StatusNotFound)// 响应类型 Content-Type 以下代码表示响应内容为 html charset编码//当然你也可以设置为其它,参考该链接:https://tool.oschina.net/commons/
w.Header().Set("Content-Type","text/html; charset=utf-8")
其它
设置请求代理
默认golang的代理是官方的链接 以下命令可查看golang默认配置
go env
更改
go env -w GOPROXY=https://goproxy.cn
godoc 离线文档
下载
go get golang.org/x/tools/cmd/godoc
使用 6060端口号
godoc -http=:6060
需要注意的是这个文档全是英文 中文版的要自己找!
自动重载
主要解决问题是频繁的停止&&重新编译
下载&&安装
go get -u github.com/cosmtrek/air
使用
air
查看版本
air -v
不知道为啥 我使用air -v 展示的是下面这样的
没有版本号….不过不影响使用
结语
多看文档、多看教程…
暂时分享到这里