关于go中的定义赋值
a = 1,var a int ,a:=1的区别
“a = 1”:给已经声明的a赋值不带声明属性
未声明直接使用a=1结果
“var a int”:声明一个整型字符数a,未赋值(或可视作赋值为0),此时打印a,结果为0
“a: = 1"声明并给一个整型数值a赋值为1
总结:“var a int” +" a = 1"等价于"a:=1"
Go语法允许交换赋值:a,b = b,a //交换a,b的值
Go中的斐波拉数列:
什么是斐波拉数列?
1,1,2,3,5,8,13,21,34,55,89…
每一个数都等于前两个数之和
一个百科上的特殊性质:n越大,n/n+1越接近黄金比例数
Go中计算斐波拉数列的第n个数也是使用递归的思想
具体就是,每个数等于前面俩数的和,但是前面两数的第二个数又等于更前面俩数的和,我只需要递归计算数列前两数的和然后视N一个个加上前两数里的第一个数就der(我说的狗屁不通大家直接去看C语言的斐波拉数列教程吧)
go最关键的部分就是简化了C语言里交换值的部分
x,y = y,x+y
注意这里,是先计算x+y再与y交换的,要不然此时的x+y结果会是原来的2y;
困扰一天的傻逼编译器
在同一个package下调用另一个gofile的函数,点击绿三角不让build和run,要不就是报错那个函数是未定义属性,改了一天包和import,最后才知道同一个goproject下如果直接去run那个调用其他函数的主file一定会报错,解决方案就是在左边的文件目录栏右键project包然后run build project/,把文件下所有gofile一起Go and build这样才会运行正确不会报错。
函数和数据类型学习:
整数:把10进制整数显示为二进制数:”%b"
%b在“%"和”b"中间加数字表示保留几位剩下的前面空位用0补齐
二进制运算:左移<<
右移>>
(与或非太傻逼了我就不写了)
^异或
&^按位清除
复数:复数的声明有complex64和complex128分别由float32和float64组成。
real(复数)仅保留实部 imag(复数)仅保留虚部
可以用英文去记,real是真实,image是想象的虚构的
布尔值:btoi:b true return 1;b false return0
itob:i !=0 return true ;i=0 return false
字符串*:len(s)返回s的字符个数包括空格
s[i]:表示s字符串里第i+1个字符的Unicode编码数
s[0:i]:表示字符串第一个到i+1个字符的unicode编码数
s[i:len(s)-1]:表示第i+1到最后一个字符的Unicode数
s[:]:输出字符串所有字符的Unicode数
转义符与C语言基本一致
Unicode可以用作转义字符代表汉字