golang基础部分:
go无法下载安装 git插件,是因为 go代理的ip地址无法访问,可以更换下地址:
默认使用的是proxy.golang.org,在国内无法访问
go>go get -u github.com/go-sql-driver/mysql
go>go env -w GOPROXY=https://goproxy.cn
goweb 部分:
goweb 的四种链接方式:
net/http 包
package main
import (
"fmt"
"net/http"
)
func handel(w http.ResponseWriter, r *http.Request) {
// fmt.Fprintln(w, "helloword !!!", r.URL)
fmt.Fprintln(w, "用多路复用器 helloword !!!", r.URL)
}
func main() {
//1.第一种
//最简单最常用的方式
// http.HandleFunc("/", handel)
// http.ListenAndServe(":8080", nil)
//2.第二种
//创建多路复用器来调用自己的handel
mux := http.NewServeMux()
mux.HandleFunc("/", handel)
http.ListenAndServe(":8080", mux)
}
package main
import (
"fmt"
"net/http"
"time"
)
type MyHandel struct{}
func (this *MyHandel) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "正在通过自己的 handel 处理数据...", r.URL)
fmt.Fprintln(w, "通过详细配置 来处理数据")
}
func main() {
//3.第三种:
//简单配置调用
var myHandel MyHandel
// http.Handle("/myhandel", &myHandel)
// http.ListenAndServe(":8080", nil)
//4.第四种:
//通过配置 详细server 调用
server := http.Server{
Addr: ":8080",
Handler: &myHandel,
ReadTimeout: 2 * time.Second,
}
server.ListenAndServe()
}
goweb 链接数据库:
database/sql 包
安装 第三方的 驱动包
demo:
两种增删改的方式:
1.带预编译
2.不带预编译
3.
查询 sql
查一条:
api:
查全部:
testing 包 测试:
1.文件名必须是 xxx_testing.go
2.测试文件必须与被测试文件在一个文件夹下
3.func 函数名命名规则: 建议 必须Test开头,第二个字母大写 驼峰式命名,如:TestXxx ,TestAddUser
4.操作命令 行:go test
例:
第二种执行方式:
子程序的执行
第三种:
TestMain 方式:
go test -v 打印详细信息
package main
import (
"fmt"
"testing"
)
//TestMain 在 TestAddUser 之前先被调用
func TestMain(m *testing.M) {
fmt.Println("TestMain 程序 ...被调用")
m.Run()
}
//必须Test开头+大写字母+其他 TestAddUser
//文件命名 必须是 xxx_test.go 以 test.go 结尾
func TestAddUser(t *testing.T) {
fmt.Println("TestAddUser ...被调用")
t.Run("testUser", testUser)
}
func testUser(t *testing.T) {
fmt.Println("testUser 子程序 ...被调用")
}
运行结果:
go test :
go test -v
3, 获取 request 数据 请求数据
api:
结果:
获取请求参数:
测试 paraseForm 时 要把上边其他 测试关闭,以防有影响
api:
结果:
响应请求:
相应一个页面:
json 方式响应:
重定向:
结果:
go 的模板引擎:
api:
后台:
界面
后台:
结果:
go 处理静态资源:
书城项目:
初始化数据库系统:
创建表
testing
注册:
动作:
例子:
后台:
前台:
迭代:
例子:
后台:
前台:
遍历map
遍历管道:
例子:
前端:
结果:
包含动作:
定义动作:
块动作:
继续书城项目:
创建数据库 表:
新增 book 结构体
后台:
测试一下:
修改 html 调用 href
添加图书:
control:
dao main:
测试:
前端:
结果:
删除:
dao:
test:
go test
main
control:
结果:
修改:
dao:
查一本书:
test:control:
界面:
合并 添加 和更新页面,区别在于 是不是又图书的 id 如果又id 则为更新,如果没有则为添加
删除添加页面 ,修改下更新页面:
后台部分:
main:
分页
数据库分页原理:
创建 分页结构体
实现分页函数:
main:
去首页:
同上类似
加条件的查询 同 正常取列表,只是 sql 语句里需要加对应的条件语句,其他不变
7、会话控制
设置 cookie的两种方式
获取 cookie
页面判断:
登出 :
//判断重复登录:
购物车:
每条的 item struct 结构体
购物车的 struct
购物车 的 增删改查,同 book 的增删改查
订单 的 增删改查,同 book 的增删改查