- 博客(17)
- 收藏
- 关注
原创 go mysql操作
数据库驱动是不同数据库开发商(比如oracle mysql等)为计算机语言能够实现数据库访问而开发的程序它将计算机语言对数据库的操作翻译成自身的数据库语言使用go语言操作mysql, 需要的驱动: github.com/go-sql-driver/mysql使用命令:go get安装第三方mysql驱动:C:\Windows\System32>go get gith...
2019-02-28 15:56:42 523
原创 go 模板
go可以不需要第三方的模板, 它自己具有模板功能首先需要模板文件(作为渲染页面):index.html:<html> <head> <title>this is a template</title> </head> <body> <h1> nam
2019-02-28 11:00:32 360
原创 go http
http包提供了HTTP客户端和服务端的实现*http.Request 获取客户端提交的数据http.ResponseWriter向客户端响应数据http_server.go:/* 自定义http的业务逻辑函数*/// response是一个io.Writer, 相当于一个打开了的文件(浏览器窗口)func login(response http.ResponseW...
2019-02-27 13:36:03 404
原创 go 单元测试
testing包提供对 Go 包的自动化测试的支通过 `go test` 命令,能够自动执行如下形式的任何函数:func TestXxx(te *testing.T) Test是固定的, *testing.T也是固定的参数类型calc.go中 里面是目标函数, 没有任何要求package test// 加法计算函数func CalcAdd(a, b int)...
2019-02-22 17:14:31 103
原创 go 定时器
time包中的方法NewTicker可以创建一个*Ticker Ticker是一个结构体, 其中的字段C是一个channel创建Ticker时, 根据参数表示的间隔, 向C中存入当前的时间(背后有一个协程执行这个动作)func main() { t := time.NewTicker(time.Second) for v:= range t.C { ...
2019-02-22 13:07:02 1754
原创 go 线程与channel
线程, 程序运行的分支go中的线程是轻量级的线程, 不需要使用线程池管理开启线程: go func()import ( "fmt" "runtime")func main() { maxCpu := runtime.NumCPU() // 获取cpu核数 fmt.Println(maxCpu) runtime.GOMAXPRO...
2019-02-21 17:06:28 472
原创 go 错误处理
type error interface { Error() string}内建error接口 类型用于表示错误信息,nil值表示无错误, 不属于哪一个包, 能直接使用errors包中的New函数可以构建error变量func main() { var err = errors.New(" has error") fmt.Println(err.Error...
2019-02-19 23:28:52 162
原创 go json协议
json协议是一个数据互通桥梁, 和语言无关, 它起的作用相当于翻译官比如要go里面的数据 转换为 java的数据直接把go数据给java, 肯定是不行的, 比如java根本就不认识结构体此时需要中间桥梁json , 因为json是java和go都能处理的先将go的数据转换为json, 这样java再将json转换为自己语言的数据golang --> 序列化为json字...
2019-02-19 12:29:20 220
原创 go 命令行参数
os.Agrs 是一个string型的切片, 用于储存所有的命令行参数如果不传入命令行参数, 则os.Args中只有一个参数 -- 程序本身func main() { fmt.Println(len(os.Args)) // 1 for k, v := range os.Args { fmt.Printf("%d --- %s\n", k, v) // ...
2019-02-18 22:33:50 748
原创 go 标准输入输出 与 文件读写
平常使用的输入输出操作:func main() { fmt.Println("输入输出测试") var a int var b string fmt.Scanln(&a, &b) // 从终端读取字符串(输入时以空格分隔) fmt.Scanf("%d %s", &a, &b) // 格式化从终端读取(输入时以空格分隔)...
2019-02-18 21:32:53 5415
原创 go 接口使用(适配器模式)
接口就是一种规范, 只要遵循规范就可以使用其方法做多态操作使用步骤:1.在接口中定义方法2.需要不同的实现3.统一管理这些实现以一个负载均衡为例创建实例(主机)instance.go:package balanceimport "strconv"/*用于表示主机实例*/type Instance struct { host string //...
2019-02-17 12:57:32 438
原创 go反射
反射: 在运行时动态地获取变量的相关信息func test(data interface{}) {...}对于这个test函数而言, 它并不知道参数data的信息在运行时, 可以根据一种方式获取data的实际信息 -- 反射反射有两个常用函数:func TypeOf(i interface{}) Type -- TypeOf返回接口i中保存的值的类型func Value...
2019-02-14 22:57:54 96
原创 go接口
go里面的接口使用interface定义接口就是提供一种规范, 不需要关注它的实现, 都按照相同的操作使用它接口是一种类型 type Test interface {...}接口中包含未实现的方法, 不可包含变量 结构体的方法中, 如果有方法签名与接口中的方法签名相同, 则称结构体实现了该方法结构体需要全部实现接口中的方法, 才称为实现了接口, 才可以将结构体变量赋给接口变...
2019-02-14 21:14:01 167 1
原创 go链表(头指针和尾指针)
要求: 创建一个空链表, 可以从头部插入任意数据, 也可以从尾部插入, 再遍历出来分析: 首先肯定是需要一个链表型的结构体 再用一个结构体分别指向链表的头和尾两个节点 向链表添加元素时, 动态修改两个指针的指向 主要弄清楚二者的关系就好理解了, 关系如下图:上面是结构体链表/*创建链表结构体, 用于表示实际链表上的节点*...
2019-02-14 11:28:53 2817
原创 go结构体链表二叉树
链表就是 一个元素 通过指针连结 另一个元素, 元素之间在内存中不是连续的定义结构体:type Student struct { Name string Age int32 Score float32 next *Student}如上这种结构体, 有一个属性是指针类型的这种结构体的多个变量, 就可以构成链表现有三个Student变量ABC, ...
2019-02-12 10:09:14 257
原创 go函数
go语言中的函数是一个引用类型的变量, 变量名就是函数名func main() { println(add)}func add(a,b int) int { return a+b}输出:0x473550声明多个相同的函数(函数体不同), 那么这些函数就是相同类型的可以使用type声明出这种函数类型:type func_AB func(a ,b int)...
2019-02-01 22:19:56 160
原创 go流程控制
if用于判断, 一般有如下三种形式1.if 条件 {...}2.if 条件 {} else { // else不能写在下一行}3.if 条件 { // 只会执行一个代码块(即各代码块互斥)} else if 条件 {} else if 条件 {} else {}...
2019-02-01 11:08:52 98
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人