摘要: 解析记录命令行 os.Args os.Args 是一个 string 的切片,用来存储所有的命令行参数 func main() { fmt.Println("命令行的参数有", len(os.Args)) //遍历os.Args切片,就可以得到所有的命令行输入参数值 for i, v := rang 阅读全文
posted @ 2020-09-03 14:38 养诚 阅读(486) 评论(0) 推荐(0) 编辑
摘要: Beego: 原生方式使用MySQL package controllers import ( "database/sql" "fmt" "github.com/astaxie/beego" _ "github.com/go-sql-driver/mysql" ) type MysqlControl 阅读全文
posted @ 2020-09-03 14:36 养诚 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 时间操作 Time包 获取当前时间 t := time.Now() fmt.Printf("%T\n", t) //time.Time fmt.Println(t) //2019-07-08 15:23:55.1114609 +0800 DST m=+0.000192401 获取指定的时间 t := 阅读全文
posted @ 2020-09-03 14:34 养诚 阅读(1732) 评论(0) 推荐(0) 编辑
摘要: GUI编程 互联网上已经涌现出不少成熟、好用的第三方GUI界面库。 https://github.com/avelino/awesome-go#gui GTK2 GTK+ 是一种面向对象式的API(applicationprogramming interface)。Glib 是GTK+的基础,而这种 阅读全文
posted @ 2020-09-03 14:29 养诚 阅读(1926) 评论(0) 推荐(0) 编辑
摘要: 单元测试 传统的方法 传统方法的缺点分析 不方便, 我们需要在 main 函数中去调用,这样就需要去修改 main 函数,如果现在项目正在运行,就可能去停止项目。 不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在 main 函数,不利于我们管理和清晰我们思路 引出单元测试。-> test 阅读全文
posted @ 2020-09-03 14:25 养诚 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 网络编程 TCP socket 编程,是网络编程的主流。之所以叫 Tcp socket 编程,是因为底层是基于 Tcp/ip 协议的. b/s 结构的 http 编程,我们使用浏览器去访问服务器时,使用的就是 http 协议,而 http 底层依旧是用 tcp socket 实现的。 协议(tcp/ 阅读全文
posted @ 2020-09-03 14:24 养诚 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 协程(goroutine) 基本介绍 并发和并行 多线程程序在单核上运行,就是并发 多线程程序在多核上运行,就是并行 并发:因为是在一一个cpu上,比如有10个线程,每个线程执行10毫秒(进行轮询操作),从人的角度看,好像这10个线程都在运行,但是从微观上看,在某一个时间点看,其实只有一一个线程在执 阅读全文
posted @ 2020-09-03 14:22 养诚 阅读(652) 评论(0) 推荐(0) 编辑
摘要: 文件操作 文件的概念 文件是数据源(保存数据的地方)的一种,文件最主要的作用就是保存数据. 输入流和输出流 流:数据在数据源(文件)和程序(内存)之间经历的路径 输入流:数据从数据源(文件)到程序(内存)的路径 输出流:数据从程序(内存)到数据源(文件)的路径 os.File os.File 封装所 阅读全文
posted @ 2020-09-03 14:20 养诚 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 反射 基本介绍 反射可以在运行时动态获取变量的各种信息, 比如变量的类型(type),类别(kind) 如果是结构体变量,还可以获取到结构体本身的信息(包括结构体的字段、方法) 通过反射,可以修改变量的值,可以调用关联的方法。 使用反射,需要 import (“reflect”) 应用场景 不知道接 阅读全文
posted @ 2020-09-03 14:19 养诚 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 简介 Golang 仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它 OOP 语言不一样; 没有封装、继承、多态这些概念,但同样通过别的方式实现这些特性; 封装:通过方法实现; 继承:通过匿名字段实现; 多态:通过接口实现; 抽象 把一类事物的共有的属性(字段)和行为(方法)提取出来 阅读全文
posted @ 2020-09-03 14:18 养诚 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 进制 进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制 X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一, 阅读全文
posted @ 2020-09-03 14:17 养诚 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 排序 内部排序 指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法); 外部排序 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。 冒泡排序 func BubbleSort(arr *[5]int) { 阅读全文
posted @ 2020-09-03 14:16 养诚 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 流程控制 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。 顺序控制 分支控制 循环控制 顺序控制 程序从上到下逐行的执行,中间没有任何判断和跳转。 分支控制 让程序有选择的执行,分支控制有三种: 单分支 if 条件表达式 { //执行代码块 } 双分支 阅读全文
posted @ 2020-09-03 14:15 养诚 阅读(274) 评论(0) 推荐(0) 编辑
摘要: go文件结构与转义字符 //输出hello world pacakage main //归属包路径 import "fmt" //引入包 func main () { //main函数 fmt.Println("hello world!") //每句结尾可省略“;” fmt.Println("hel 阅读全文
posted @ 2020-09-03 14:13 养诚 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 变量与常量 变量(Variable) 变量表示内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型)。 方法 1 var a int //声明 声明后若不赋值,使用默认值 a = 10 //赋值 fmt.Println(a) //使用 方法 2 var a = 10 //声明并赋值 根 阅读全文
posted @ 2020-09-03 14:12 养诚 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 运算符 运算符用于在程序运行时执行数学或逻辑运算。 Go 语言内置的运算符有:算术运算符、赋值运算符、逻辑运算符、关系运算符、位运算符、其他运算符 Go语言不支持三元运算符。 算术运算符 算数运算符是对数值型的变量进行运算的,比如:加减乘除,在Go程序中使用的非常多。 下表列出了所有Go语言的算术运 阅读全文
posted @ 2020-09-03 14:11 养诚 阅读(354) 评论(0) 推荐(0) 编辑