
golang
文章平均质量分 65
golang语法记录
叫我小黄吧
他日若遂凌云志,敢笑黄巢不丈夫
展开
-
golang方法使用建议
golang方法golang也是可以实现面向对象编程。方法定义:方法是一种和对象绑定的特殊函数。它具有普通函数的所有特性(之前文章已介绍),比较特殊的是它有一个接收器(receiver),用于作为函数操作的对象。方法定义receiver的选择方法reciever可以用类型也可以用指针。两者的区别仅仅在于调用方法时是否需要拷贝对象,这实际上和通过形式参数传参没有本质区别,由此可见如果方法需要修改对象的值,那么需要指针作为receiver。【注】reciever无论是变量还是指针,都拥有所有的方原创 2021-11-23 23:42:05 · 281 阅读 · 0 评论 -
golang函数详解
golang函数golang函数特点汇总无需前置声明函数调用,不需要在调用函数先之前声明被调函数不支持函数重载同一个包中函数名不能重复不支持默认参数(这是一种优秀的代码习惯,c++中也不提倡使用默认参数)支持不定长变参不定长(使用…), 变参 (使用interface{})支持多返回值支持匿名函数和闭包(下文会专门解释)函数传参和大多数语言一样,golang可以按值传参,以及按引用(指针)传值。这两者本质并区别,从实参到形参都需要经历一次拷贝,只是拷贝的对象不一样。前者拷贝原创 2021-11-18 00:12:28 · 1780 阅读 · 0 评论 -
map使用注意事项及底层原理
mapmap 为一个hash table的引用不能对map中的值取地址map的index需要可比较,如果想用无法比较的值作为key,可以把key序列化为字符串map可以在迭代的过程中删除元素,迭代器不会失效golang中没有set,可以用map实现set功能,用key存放 set中的值,val中存放bool类型形如map[int]boolfor range 遍历map使用注意点链接...原创 2021-11-15 20:45:02 · 422 阅读 · 0 评论 -
slice注意事项
sliceslice本身并不是动态数组和数组指针,而已一个结构,通过设置内部指针和其他属性来访问一部分数据slice底层结构type slice struct{array unsafe.Pointerlen intcap int}array为指针,指向底层数组len 内部元素个数cap 容量数量关系为 0 <= len <= capslice创建方式array := []int{1, 2, 3, 4, 5, 6, 7}slice := array[lo原创 2021-11-14 21:23:22 · 423 阅读 · 0 评论 -
golang结构体
golang 结构体预备知识golang将数据类型分为4种,依次是基础数据类型,复合数据类型,引用数据类型, 接口数据类型1)基础数据类型:数字,字符串, 布尔2)复合数据类型: 数组,结构体3)引用数据类型:指针,切片,字典,函数,通道4)接口数据类型几个特殊结构底层结构1)string {*dataptr, len}2)slice {*dataptr,len,capacity}3)map {*hashtableptr}4)interface{} {*原创 2021-11-13 17:17:40 · 487 阅读 · 0 评论 -
golang 类型别名
类型别名(type)在c/c++中类型别名 我们常用 #define(编译预处理时简单的字符串替换) 和typedef(编译期间做替换)。在golang中我们使用type,从使用方面和c/c++中还是有比较大区别的测试代码package mainimport ( "fmt" "reflect")type X inttype Y intfunc testFunc(param X) { fmt.Printf("%T\n", param)}func testFunc2(param原创 2021-11-13 15:08:03 · 1299 阅读 · 0 评论 -
golang变量
变量必要概念在计算机中,变量为一段内存。变量类型决定了变量的存储方式,以及存储长度,我们无法改变类型,但我们可以通过强制类型转换,可以用不同的方式读取或修改变量的值,但这并不意味着我们改变了变量类型。实际上,内存分配发生在运行时。有点汇编基础的,就应该知道,汇编层面,没有变量这一概念,只有对内存数组的操作而已常用变量定义的方式var x = 100var x intx := 100(规范)推荐分组定义变量var ( x int y int u,v = 100)定义变量的原创 2021-11-13 13:59:15 · 307 阅读 · 0 评论