一,变量
1,变量使用注意事项
1)变量表示内存中的一个存储区域
2)该区域有自己的名称(变量名)和类型(数据类型)
3)Golang变量使用的三种方式:
第一种:指定变量类型,声明后若不赋值,使用默认值(默认值为0)
第二种:根据值自行判断变量类型(类型推导)
第三种:省略var,注意:=左侧的变量不应该是已经声明过的,否则会导致编译错误
4)多变量声明
我按照golang变量声明的第三种方式,我自己猜测,可不可以用如下方法来定义多个变量呢
答案是不行的(要s1,s2,s3 := 2,2,2 才可以)
于是我按照官方正确方法,总结如下多变量定义方法
二,注意事项
1)该区域的数据值可以在同一类型范围内不断变化
2)变量在同一作用域(在一个函数或者在代码)内不能重名(其实就是不能定义两次,但是定义了一次可以赋值多次)
3)变量=变量名+值+数据类型
4)int默认0,string默认空串
三,明确概念
加号➕在数字里就是加法运算,在字符串就是拼接
四,数据类型
基本同java
但是有一些派生数据类型,如:指针,数组,结构体,管道,函数,切片,接口,map
1,整型使用细节
fmt.Printf("n1 的数据类型 %T ",n1)//用于查看数据类型
2.浮点数使用细节
3.字符类型使用细节
4.布尔类型
1)只能是true false
2)占一个字节
3)用于流程控制
5.字符串类型
1)go的字符串用的是utf-8,这样中文编码就不会出错
2)字符串一旦赋值就不可变动了,字符串无法通过下表改变。如:str = ”hello“ ,不能用str[0]=l
去改变
3)字符串的两种表现形式
(1)双引号,会识别转义字符
(2)反引号,以字符串原生形态输出,包括换行和特殊字符,可以实现防止攻击,输出源代码等效果
5.基本数据类型默认值
整型和浮点数都是0
布尔类型为 false
字符串为""
6.基本数据类型的转换
这一点和java/c都不同,golang数据类型不能自动转换表达式
表达式T(v)进行转换,T代表数据类型,v代表要变的变量
细节:(1)go中,数据类型的转换可以是从表示范围小-->表示范围,反过来也可以
(2)被转换的是变量存储的数据,变量本身的数据类型并没有变化
如上图,我只是把i的值变为int64或者其他,然后赋值给n2.i的值本身不变
(3)转化的时候有时候结果不敬人意,比如:int64转化为int8时候结果按溢出处理,他不会报错,但是和我们想的不一样。所以即使可以大小呼唤,但也别乱转。