长期记录更新go实际遇到的问题和解决,分一个个记太特么费事了
2021_07_23 安装依赖时遇到的坑
原理还没理解,也许以后会明白的。就是把项目里的的config.yml.example的example后缀改了,然后影响了依赖包的正常安装,取消了问题就解决了。
2021_07_23 go没有集合的解决方法
go的map是个hash表,将查表内容对应的改为void即可变成集合,如下的示例
1
2
3
type emptyElement struct{}
var emptyMember emptyElement
parentSet := make(map[string]emptyElement)
2021_07_26 go报函数未定义
在同一目录下写了test但是跑不起来,要运行命令行可以go test -v a_test.go a.go。用ide调试的话都选中右键debug即可
2021_07_27 go变量作用域的问题
作用域的一切书上或者别人的博客里都有,我只说一个。类似于定义了一个变量后,在for循环里的if条件里引用,ide会一开始报数据未使用的错,其实没事,继续写下去一切就消失了。
2021_07_27 *和&
牢记*是访问地址的值,&是取地址就可以了。此外都不重要了。还有就是*标记的参数按我的理解,就是代表这是一个引用型,虽然go没有真的引用。反正就是对于引用型的,赋值都要加上&
2021_07_27 未解决 go结构体赋值的问题
比如我在文件a中定义了Listnode,然后在文件b中导入,然后我这么写
1
type ListNode = a.ListNode
看起来可以这样写,但是之后函数里使用到ListNode的地方都会报黄色提醒
Fields are assigned without explicit names
实际上不影响代码运行,但是暂时不能理解原理
2021_07_28 关于传入结构体返回值的问题
结构体必须要直接返回一次,才能影响传入的值。如果直接是int这类的值,在函数里修改就可以直接影响结果
2021_07_29 关于map找不到值时返回的值
int则返回0,字符串就是空字符串,结构体就是对应的结构体中,按照规则返回对应的初始值,形成的一个结构体。
此外,必须用ok来确定map是否查到。并且即便没查到,也可用用a :=map[xx]的形式给变量a赋值。类似于python里collections包提供的defultdict包
2021_07_28 用下标或range遍历字符串的不同
用range,取出的不是字符,是int32的数字,或者说是rune类型的,用下标,得到的是unit8类型,或者说byte类型的字符串
2021_08_02 map类型传参是否改变
如果map在外面已经初始化,则可以通过传参,在函数内部修改map值。否则不能