GO学习
go语言学习笔记
拼搏的菜鸟
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
19 tail和sarama模块使用
tail模块下载go get github.com/hpcloud/tail使用package mainimport ( "fmt" "os" "time" "github.com/hpcloud/tail")/*type Config struct { // File-specifc Location *SeekInfo // 在seek的位置开始读 ReOpen bool // 重新打开重新创建的文件 (tail -F) MustExis原创 2022-03-30 23:00:44 · 433 阅读 · 0 评论 -
18 数据库操作
GO操作MySQL1.下载驱动go get -u github.com/go-sql-driver/mysql2.数据库操作package mainimport ( "database/sql" "fmt" "os" _ "github.com/go-sql-driver/mysql")//表sys_configtype table struct { variable string value string set_time string set_by st原创 2022-03-25 20:37:11 · 887 阅读 · 0 评论 -
17 flag包介绍
1.os.Argsfunc main() { fmt.Printf("%T\n", os.Args) fmt.Printf("%#v\n", os.Args) fmt.Println(os.Args[1], os.Args[3])}输出结果:# .\zyz.test.com.exe a b c[]string[]string{"D:\\WorkSpace\\GoWorkspace\\src\\zyz.test.com\\zyz.test.com.exe", "a", "b", "c"}原创 2022-03-21 23:11:02 · 262 阅读 · 0 评论 -
16 软件测试
一、单元测试依赖 go test命令,在包目录内,所有以 test.go为后缀的源代码文件都是 go test测试的一部分类型格式作用测试函数函数名前缀为Test测试程序的一些逻辑行为是否正确基准函数函数名前缀为Benchmark测试函数的性能示例函数函数名前缀为Example为文档提供示例文档1.常规测试package calcimport ( "testing")func Test1Add(t *testing.T) { ret :原创 2022-03-21 23:09:57 · 148 阅读 · 0 评论 -
15 网络编程
TCP协议TCP服务端编程:package mainimport ( "fmt" "net" "os")func clientor(c net.Conn) { clientAddr := c.RemoteAddr().String() for { //1.接收客户端消息 buf := make([]byte, 128) _, err := c.Read(buf) if err != nil { fmt.Println("conneter read error.原创 2022-03-21 23:07:42 · 333 阅读 · 0 评论 -
14 互斥锁和原子操作
1.互斥锁package mainimport ( "fmt" "sync")var mutex sync.Mutexvar wg sync.WaitGroupvar x int = 0func add() { defer wg.Done() mutex.Lock() x++ mutex.Unlock()}func main() { for i := 0; i < 1000; i++ { wg.Add(1) go add() } wg.Wait(原创 2022-03-17 23:54:21 · 622 阅读 · 0 评论 -
13 线程(geroutine)和通道(channel)
一、线程(geroutine)1.线程使用package mainimport ( "fmt" "runtime" "time")func geroutine(i int) { fmt.Printf("[%d]geroutine is called.\n", i)}func main() { runtime.GOMAXPROCS(6) for i := 0; i < 10; i++ { go geroutine(i) } time.Sleep(time.Se原创 2022-03-17 23:50:53 · 412 阅读 · 0 评论 -
12 配置文件ini操作
1.安装$ go get gopkg.in/ini.v12.ini内容读取package mainimport ( "fmt" "log" "os" "gopkg.in/ini.v1")/* config.inimode=1[mysql]address=192.168.1.123port=3333user=rootpassword=root[oracle]address=000.000.000.000port=9999user=rootpassword=原创 2022-03-14 00:14:51 · 4050 阅读 · 0 评论 -
11 文件操作
一、文件读取操作1.用os读取文件func main() { //打开文件 file, err := os.Open("./array.go") if err != nil { fmt.Println(err) } //函数退出之前关闭文件 defer file.Close() //读取array.go内容 buf := make([]byte, 512) len, err := file.Read(buf) if err != nil { fmt.Println(err原创 2022-03-10 23:42:29 · 152 阅读 · 0 评论 -
10 接口(interface)
一、接口Interface接口是一种特殊的类型,抽象类型。1.定义/*type 接口名 interface{ 方法名1(参数1, 参数2...)(返回值1, 返回值2...) 方法名2(参数1, 参数2...)(返回值1, 返回值2...) ...}*///定义runer接口type runer interface { run()}//定义eater接口type eater interface { eat(string)}2.实现//定义dog类型type do原创 2022-03-10 16:33:06 · 301 阅读 · 0 评论 -
09 自定义类型和结构体
一、类型typetype myint1 int //自定义类型type myint2 = int //类型别名func main() { var m myint1 m = 100 fmt.Printf("%T\n", m) //main.myint1 var n myint2 n = 200 fmt.Printf("%T\n", n) //int}二、结构体1.定义//方法1:常规定义type person struct { name string age int原创 2022-03-08 00:09:14 · 142 阅读 · 0 评论 -
08 函数和defer
一、函数1.函数的定义//方式1:有参数有返回值func f1(a int, b int) (ret int) { return a + b}//方式2:有参数无返回值func f2(a int, b int) { fmt.Println("...")}//方式3:无参数有返回值func f3() (ret int) { return 1}//方式4:无参数无返回值func f4() { fmt.Println("...")}//方式5:多个返回值func f5原创 2022-03-08 00:06:13 · 121 阅读 · 0 评论 -
07 指针和map
一、指针&:取地址*:根据地址取值1.new//申请一个内存地址var p *intvar p1 = new(int)fmt.Println(p) //<nil>fmt.Println(p1) //0xc0001280582.make//区别于new,只用于slice、map、channel内存创建,返回类型而不是指针var a = make([]int, 3, 5)var b = make(map[string]int, 10)二、map1.定义原创 2022-03-05 14:49:26 · 186 阅读 · 0 评论 -
06 数组和切片
一、数组1.定义//数组的长度是类型的一部分//如果不初始化,默认值为零值(布尔值为false)var a1 [4]boolvar a2 [3]int2.初始化//初始化1var a1 [4]boolvar a2 [3]inta1 = [4]bool{true, true, true, true}a2 = [3]int{12, 23, 34}//初始化2a3 := [4]bool{true, true, true, true}a4 := [3]int{12, 23, 34}原创 2022-03-05 14:47:41 · 193 阅读 · 0 评论 -
05 运算符
算术运算符+ 相加- 相减* 相乘/ 相除% 求余关系运算符== 检查两个值是否相等,如果相等返回 True 否则返回 False。!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False。> 检查左边值是否大于右边值,如果是返回 True 否则返回 False。>= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。< 检查左边值是否小于右边值,如果是返回 True 否则返回 False。<=逻辑运算原创 2022-03-05 14:43:53 · 99 阅读 · 0 评论 -
04 流程控制if和for
一、条件控制if1.写法一:常规写法age := 19if age > 18 { fmt.Println("我成年了!")} else { fmt.Println("我还是未成年!")}2.写法二:加初始语句if age := 19; age > 18 { fmt.Println("我成年了!")} else { fmt.Println("我还是未成年!")}3.方法三:多分支判断age := 19if age > 35 { fmt.Println(原创 2022-03-05 14:41:45 · 227 阅读 · 0 评论 -
03 数据类型和变量
一、变量1.声明变量//变量声明var name stringvar age intvar isOk bool2.批量声明变量//批量声明变量var ( name string age int isOk bool)3.声明变量同时赋值//声明变量同时赋值var name string = "zhangsan"4.类型推导//类型推导var s = "lisi"5.简短变量声明//简短变量声明str := "wangwu"fmt.Println(str)原创 2022-03-05 14:39:29 · 304 阅读 · 0 评论 -
02 基础概念和命令
安装与设置1.工作区和GOPATH2.源码文件分类和含义3.代码包相关知识4.常用命令1.工作区和GOPATH一般情况下,工作区用来放置GO源码文件#工作区习惯目录/home/zyz/godemo src/ 存放源码,以代码包组织 pkg/ 存放归档文件和平台相关目录(.a文件) bin/ 存放当前工作区中go程序可执行文件2.源码文件分类和含义测试源码文件//其中至少有一个函数的名称以Test或Benchmark为前缀//并且,该函数接受一个类型为*testing.T或*原创 2022-03-01 20:32:45 · 233 阅读 · 0 评论 -
01 vs+go环境搭建
1.go安装包下载地址Go官网下载地址Go官方镜像站(推荐)2.go安装步骤window平台安装步骤1:双击go安装包,按照提示步骤安装即可步骤2:分别配置GOROOT和GOPATH环境变量,GOROOT指安装路径,GOPATH指工作目录注意:在Go1.14及之后的版本中启用了Go Module模式之后,不一定非要将代码写到GOPATH目录 下,所以也就不需要我们再自己配置GOPATH了,使用默认的即可。linux平台安装将下载好的文件解压到/usr/local目录下:tar -zx原创 2021-08-29 12:34:00 · 1007 阅读 · 0 评论
分享