go学习
文章平均质量分 60
BigOrangeSama
这个作者很懒,什么都没留下…
展开
-
Go学习net/http
参考net/http。转载 2023-09-16 01:18:33 · 47 阅读 · 0 评论 -
go学习part21(3)redis连接池
每次使用数据就就建立链接再关闭可以,但是如果有大量客户端频繁请求连接,大量创建连接和关闭会非常耗费资源。所以就建立一个连接池,里面存放几个不关闭的连接,谁要用就分配给谁。说明:通过Golang 对 Redis操作,还可以通过Redis链接池。流程如下:1)事先初始化一定数量的链接,放入到链接池2)当Go需要操作Redis 时,直接从Redis链接池取出链接即可。3)这样可以节省临时获取Redis链接的时间,从而提高效率.4)示意图。原创 2023-08-29 20:40:01 · 722 阅读 · 0 评论 -
go学习part21 Redis和Go(2)
借鉴:三方redis库已经迁移到以下网址,go get github.com/gomodule/redigo/redis注意下载的文件是在GOPATH/src下面,而不是在GOPATH下。原创 2023-08-29 19:22:19 · 518 阅读 · 0 评论 -
go学习part21 Redis
300_尚硅谷_Redis的基本介绍和原理示意_哔哩哔哩_bilibiliRedis 命令 | 菜鸟教程 (runoob.com) Redis的基本使用:说明:Redis安装好后,默认有16个数据库,初始默认使用0号库,编号是0...151.添加key-val [set]2.查看当前redis的所有key [keys *]3..获取key对应的值.[get key]4.切换redis 数据库[select index]5.如何查看当前数据库的key-val数量[dbsize]6.清空当前数据库的原创 2023-08-28 19:17:00 · 490 阅读 · 0 评论 -
go学习part20(3)反射细节
错误示范正确示范:传指针再调用Elem()原创 2023-08-27 15:22:37 · 52 阅读 · 0 评论 -
go学习part20(3)常量
1).常量声明必须显示赋值,不能用变量或者函数返回值赋值,否则报错2).常量不能修改3).常量使用const修饰4).常量只能修饰bool、数值类型(int,float系列)、string 类型5).语法: const identifier [type] = value。原创 2023-08-27 01:13:16 · 54 阅读 · 0 评论 -
go学习part20(2)反射细节
注意当使用setXxx方法来设置需要通过对应的指针类型来完成,这样才能改变传入的变量的值,同时需要使用到reflect.Value.Elem()方法。:在反射函数里修改值的时候想要传指针,但是传指针就导致函数里Reflect.Value封装了指针类型的Value,会导致后续无法进行某些操作。所以需要Elem方法,把一个封装了指针或者接口的Value转换成封装了它们指向(承载)的值的一个封装的Value。Type和Kind可能是相同的,也可能是不同的.原创 2023-08-27 01:31:01 · 129 阅读 · 0 评论 -
go学习part20(1)反射
283_尚硅谷_反射基本介绍和示意图_哔哩哔哩_bilibili 序列化指定tag,会反射生成tag字符串 三者关系 转换关系图:变量传给空接口形参, 对reflect.Type输出是它内部封装的类型,对reflect.Value输出是它内部封装的值,但要注意它们虽然输出和int一样但是实际一个是Type接口一个是Value结构体。感觉有点像包装一个类型结构体然后绑定String()方法输出内部数值。实际类型是一个包装类型,但是输出内容的都是内部存储类型。验证:对reflect.Value执行加in原创 2023-08-26 22:51:27 · 105 阅读 · 0 评论 -
go学习part19(4)
channel的一些细节。原创 2023-08-25 15:51:23 · 58 阅读 · 0 评论 -
go学习part19(3)协程求素数
intChan存放原始数据primeChan存放检验之后的素数exitChan存放几个协程的状态。原创 2023-08-25 14:56:07 · 83 阅读 · 0 评论 -
go学习part19(1)
channel(管道)-基本使用定义/声明channelvar变量名chan数据类型举例:var intChan chan int (intChan用于存放int数据)var mapChan chan map[int]string (mapChan用于存放map[int]string类型)说明1) channel是引用类型2)channel必须初始化才能写入数据,即make后才能使用3)管道是有类型的,intChan只能写入整数int/*管道*///1.创建3个int的管道。原创 2023-08-24 22:33:58 · 42 阅读 · 0 评论 -
go学习part18协程
线程和进程的概念---略过。原创 2023-08-24 02:05:56 · 36 阅读 · 0 评论 -
go学习part17单元测试
(1) cmd>go test[如果运行正确,无日志,错误时,会输出日志]() cmd>go test-v[运行正确或是错误,都输出日志]testing框架自带main()函数,会自动搜索当前文件夹下以xxx_test.go格式的文件,并在其中寻找test函数并运行。6)当出现错误时,可以使用t.Fatalf来格式化输出错误信息,并退出程序7)t.Logf 方法可以输出相应的日志。8)测试用例函数,并没有放在main函数中,也执行了,这就是测试用例的方便之处[原理图].//如果正确,输出日志。原创 2023-08-23 14:36:05 · 33 阅读 · 0 评论 -
go学习part16(json)
json是一种便于网络传输的格式,服务器发送和接收数据都默认按json格式web编程和tcp编程的示意图:在JS语言中,一切都是对象。原创 2023-08-22 23:14:01 · 35 阅读 · 0 评论 -
go学习part14
go的文件操作都依靠os包下的file结构体,该结构体封装了很多文件操作。原创 2023-08-21 16:39:55 · 44 阅读 · 0 评论 -
go学习part13 收支软件小项目
软件开发六阶段。原创 2023-08-17 16:06:39 · 65 阅读 · 1 评论 -
go学习part12
1)switch x.(type)不仅能判断系统类型,还能判断自定义结构体和接口类型。2)x.(type)不能在switch之外使用3)接口变量usb1如果在格式化输出里会显示为实际存储类型Phone类型。在switch x.(type)里和Usb接口类型与Phone类型都能匹配上,哪个在前面匹配哪一个。原创 2023-08-16 22:14:45 · 46 阅读 · 1 评论 -
go学习part11(2)
变量(实例)具有多种形态。面向对象的第三大特征,在Go语言,多态特征是通过接口实现的。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。原创 2023-08-16 20:00:04 · 53 阅读 · 1 评论 -
go学习part11(1)
本章学习接口。原创 2023-08-15 22:41:59 · 38 阅读 · 1 评论 -
go学习part10(4)
封装和继承。原创 2023-08-15 15:44:33 · 34 阅读 · 1 评论 -
go学习part10(3)
import ("fmt"//跨包访问结构体Age inttips:1.和其他导包一样,就是声明的时候记得加上 包名.结构体2.结构体定义首字母大写,才能包外访问3.工厂模式周所周知,结构体定义名称小写,包外不可访问。但是可以用工厂模式解决。理解: 为了解决隐私安全问题,通过提供规范接口来返回初始化对象。Age int// 工厂模式,相当于一个规范接口专门返回初始化对象import ("fmt"//跨包访问结构体。原创 2023-08-15 14:23:20 · 38 阅读 · 1 评论 -
go学习part10(2)
本章主要学习 方法 的概念理解:方法相当于cpp的类的成员函数但是这个成员函数是和某个类型绑定了。a相当于是一个形参,代表调用对象,这里是一个值传递,内部修改不会影响外部结果: tips: 可以看出外部的p属性Name被test2()修改了原创 2023-08-15 13:38:17 · 55 阅读 · 1 评论 -
go学习part10(1)
/type取别名//变量大写包外可访问Age intvar t Teacher = Teacher{"小马",45,"Tshua"}原创 2023-08-14 21:33:23 · 36 阅读 · 0 评论 -
go学习part9
省略size的用法只能用于map或者channel,slice的话不指定size会报错。原创 2023-08-14 15:33:30 · 30 阅读 · 0 评论 -
go学习part8
重点:引用类型因为是记录了地址,和长度,所以修改切片之后原来引用的数组也会被修改如图所示,切片和引用的数组都改成了66不需要填写长度长度(现在多少东西)和容量(预分配多少位置)不同引用范围左闭右开make直接创建。原创 2023-08-14 14:16:19 · 33 阅读 · 0 评论 -
go学习part7
数组。原创 2023-08-13 22:00:42 · 28 阅读 · 1 评论 -
go学习part6
import ("errors""fmt"// 抛出自定义错误err := test() //接收错误类型if err!= nil { //如果捕获错误fmt.Println("捕获error")num1 := 10num2 := 0//抛出自定义错误return errors.New("除数不能为0")} else {return nil。原创 2023-08-12 18:11:00 · 33 阅读 · 1 评论 -
go学习part5(2)
init是初始化函数,每一个源文件都可以有一个,在main函数之前自动调用执行。1)基本执行顺序:变量定义 , init ,main ,其他。fmt.Println("test函数")return 0func init() { //先于main执行fmt.Println("init函数")fmt.Println("main函数")原创 2023-08-11 19:37:21 · 39 阅读 · 1 评论 -
go学习part5(1)
如果返回值列表只有一个,可以省略括号。如果没有返回值,返回值类型可以不写。原创 2023-08-10 18:41:59 · 25 阅读 · 1 评论 -
go学习part4
定义和判断用分号间隔开//可以在if后面自定义变量,但作用域仅限于里面age >= 18{age++如果匹配到当前case,那么执行到 fallthrough会继续执行下一个case的语句。相当于cpp的switch case结尾不用break。原创 2023-08-10 03:26:55 · 34 阅读 · 1 评论 -
go学习part3
go的自增自减为了防止混淆只能单独一行表示 + 1 和 -1 操作,且符号只能放在后面a++。不能像java和cpp里一样,分运算和使用的先后。输入数据类型要匹配,底层会自动进行类型判定。输入错误的类型,不会报错,但是输入会出现偏差。a%b就是,a 整除b之后的余数。等价于 a%b = a - a/b*b。类似cpp,双整形除法是整除,含有浮点数的除法是小数除法。类似于c的scanf(&a),参数是一个变量地址。按某种格式要求,按空格分隔读取内容。&位与, |位或 ,^异或。&取地址 *地址取值。原创 2023-08-09 23:09:03 · 41 阅读 · 1 评论 -
go学习part2
GOPATH作为系统环境变量需要配置,gopath就是D:\golang\goProject,然后到下面的src里。在反引号中,换行可以直接在字符串中,而双引号中必须用转义方式。1)main包下放了main函数,是程序执行入口,之前的目录可以加一级main文件夹比较合理。2)string拼接的时候 + 一定要留在行末尾,否则末尾添加分号会自动结束该行然后报错。ps:后续项目管理有更方便的gomod方式,这里先用传统gopath。声明和赋值可以结合,变量不可重复定义,赋值的类型必须和声明的一致。原创 2023-07-27 08:18:21 · 54 阅读 · 1 评论 -
go学习part1
在go文件目录下输入go build test.go指令可以构建一个exe文件。加上-o和目标名字可以指定编译文件名。然后执行 test.exe。换行不能在字符串内直接回车,否则报错,需要用字符串拼接的方式,逗号隔开。后面的 { 不能放到下一行,必须跟在这一行后面,否则报错。上面两部可以合成一步go run test.go。约定每行最多80字符,为了美观其余换行表示。一些预定义的函数,包含在一些标准库里。1.导包和指明当前包(像java)6.go的API(应用程序接口)5.输出字符长度过长。原创 2023-07-24 23:27:05 · 31 阅读 · 0 评论