![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
文章平均质量分 64
S1nJa
做难事必有所成。
展开
-
Golang爬虫初探
Golang学到协程通信部分后感觉没有那么好理解了,学的初衷就是为了了解一下Go语言并通过ctf进行一个提升,所以以爬虫做个结尾先学到这里吧,后续用到了再回来补。转载 2022-07-01 15:26:11 · 3551 阅读 · 0 评论 -
CTF—Go题目复现
一道Go的模板注入由于没了解过Go的SSTI所以先简单看下:go语言快速入门:template模板 · Golang语言社区 · 看云 (kancloud.cn)Go SSTI初探 | tyskillのBloggo的SSTI漏洞成因与模板语法和jinja2差不多,都用到了,通过{{.}}我们可以获得到作用域Demo当使用{{.}}时,会获取person结构体中的所有属性,所以在经过Execute渲染后,便会输出:除此外若想获取单个属性也可以用结果复现主要有几个路由先看的flagHandler中原创 2022-06-23 08:29:48 · 2850 阅读 · 0 评论 -
Golang学习笔记—结构体
Go语言没有纯粹的面向对象概念,都是使用结构体、函数等来实现。面相对象编程的一些特性,例如:继承、组合等特性主要是关键字,结构如下::结构体定义关键字:结构体类型名称:结构体定义关键字:成员定义未初始化时,成员都是零值,int—>0,float—>0,bool—>false,string—>nil结果:结构体成员声明与赋值点运算符赋值Demo01结果:键值对赋值除此之外还可以通过键值对赋值匿名结构体如果结构体是临时使用,可以不用起名字,直接使用demo02结果:结构体指针demo0原创 2022-06-22 09:03:33 · 490 阅读 · 0 评论 -
Golang学习笔记—指针
C的指针一直都没学过,恰巧Golang里边有顺带了解一下。Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使用指针,而无须拷贝数据。区别于C的指针,Golang中指针不能进行偏移和运算两个符号:(取地址)、(根据地址取值)语法指向了一个值的内存地址。类似于变量和常量,在使用指针前需要声明指针。格式:Demo01结果:数组指针语法Demo02结果:也可以通过指针进行地址计算...原创 2022-06-21 08:45:24 · 295 阅读 · 0 评论 -
Golang学习笔记—函数
Go语言中并没有类(class),所以并不是纯粹的面向对象语言。大多数都是用函数、结构体实现。func:函数由func开始声明function_name:函数名称,函数名和参数列表一起构成了函数签名。[parameter list]:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。return_types:返回类型,函数返回一列值。return_types是该列值的数据类型原创 2022-06-20 08:44:17 · 2460 阅读 · 0 评论 -
Golang学习笔记—map
map是一种键值对的数据结构容器,map内部实现是哈希表(hash)map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值map是引用类型可以使用内键函数make也可以使用map关键字来声明Demo1m1使用make初始化,m2批量赋值结果:Demo2可以根据索引输出结果:Demo03其实再根据索引赋值时,会产生两个值,一个是值本身,另一个是bool类型的值来判断本索引是否存在索引存在所以返回结果:循环跟数组循环遍历类似,两个值value和key(Goland快捷键)原创 2022-06-19 07:53:55 · 991 阅读 · 0 评论 -
Golang学习笔记—切片
切片是Go中重要的数据类型,每个切片对象内部都维护着:数组指针、切片长度、切片容量三个数据。在向切片中追加的数据个数大于容量时,内部会自动扩容且每次扩容都当前容量的2倍(当容量超过1024时每次扩容则只增加1/4容量)三种方式结果:自动扩容Demo1结果:Demo2结果:通过append追加后,v1,v2使用的是同一内存地址,当v1的值改变后v2也会随着改变结果:可以看到值修改了的值,v2的第一位也变成了999append也可以不赋值给其他变量,此时就代表给当前变量追加一个值Demo3原创 2022-06-18 01:00:02 · 348 阅读 · 0 评论 -
Golang学习笔记—数组篇
方式一先声明在赋值方式二声明+赋值方式三声明+赋值+指定位置没给索引1赋值,所以结果:方式四可变长数组,用…代替个数定义长度索引切片循环结果:多维数组声明定义后默认值为[ [0,0,0] [0,0,0] ]赋值demo结果:...原创 2022-06-17 12:20:29 · 101 阅读 · 0 评论 -
Golang学习笔记—流程控制
Demo1结果if语句中可以添加变量初始化语句,用分号分割,即:结果注意点go和其它语言有些小区别需要注意一下:if-else-ifswitchcase可以使条件表达式,并且在switch后无需加上参数结果:fallthrough使用fallthrough,可以再向下执行一个case结果:循环结构for结果:初始条件和结束条件可省略(个人感觉类似于while循环)死循环for-rangeGo语言中可以使用for range遍历数组、切片、字符串、map及通道(ch原创 2022-06-16 08:45:31 · 94 阅读 · 0 评论 -
Golang学习笔记—基础篇
这几天在复现之前比赛时发现go的出现频率越来越高了,所以借此也潜学一下go。个人学习笔记,由于有一丢丢的语言基础所以写的比较浅显。(写完这篇期末了 咕咕两天)Downloads - The Go Programming Language (google.cn)下载后选择路径安装即可go verion查看版本设置开发工具我用的是jetbrains的Goland,用VScode也可以Download GoLand: A Go IDE with extended support for JavaScript原创 2022-06-11 10:00:00 · 1518 阅读 · 3 评论