var和const :变量和常量的声明
var varName type 或者 varName : = value
package and import: 导入
func: 用于定义函数和方法
return :用于从函数返回
defer someCode :在函数退出之前执行
go : 用于并行
select 用于选择不同类型的通讯
interface 用于定义接口
struct 用于定义抽象数据类型
break、case、continue、for、fallthrough、else、if、switch、
goto、default 流程控制
chan用于channel通讯
type用于声明自定义类型
map用于声明map类型数据
range用于读取slice、map、channel数据
大写,即为public
常量在编译的时候就已经确定,运行时不能改变。
go语言在声明变量时还允许省略掉关键字“var”。而用“:”取代
。eg:count:=10
数据超出取值范围会溢出。如var a int8=127 fmt.Println(a
+1)//这时候输出-128
一般位数比较多的用float64来储存。
byte型和uint8本质是一样的,只是个别名,便于阅读程序。另外要
注意的是要以字符型输出要先转换,字节型数据直接输出为整形
eg:var i,j byte
i=65//转为string(i)输出A
j='A'//直接输出为65
rune和int32本质是一样的,别名,便于阅读。rune是unicode编码
指针变量初始化后的默认值的nil不是null,go中没有null
<<为位运算符,再不溢出的情况下,<<1等于乘以2的一次方,左移10
相当于乘以2的10次方。
&^为标志位清除运算符,如a的二进制为00000110,b的二进制为
00001011,则a&^b=00000100,原理为根据b上1的位置,如果在相同的
位置a为0,则不变,如果为1改变为0,b是5 7 8位为1,a上5位为0,
不变,7位为1,变为0,8位为0,不变,所以结果为00000100
go语言运算在优先级相同时自左向右
go字符串遍历分为字节数遍历和unicode遍历
字节遍历类似for最简单的运用,下面主要看unicode遍历:
eg:str:=“aaaa真好”
for i, ch := range str {
fmt.Printf("str[%d]=%v\n", i, ch)
}/*输出为:
str[0]=97
str[1]=97
str[2]=97
str[3]=97
str[4]=30495
str[7]=22909*/
常量组的初始化
const{
a=100
b
c
}
func main(){
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}//输出为三个100;
原理为如果不提供初始值,将表示使用上行表达式。
但是这种方式只在常量组试用。
枚举:
类似于常量组定义,不同的地方在后面加上 =iota//从0开始
一个例子:
const(
_=iota//忽略掉iota为0的情况
KB float64=1<<(10*iota)
MB
GB
TB
)
func main(){
fmt.Println(KB)
fmt.Println(MB)
fmt.Println(GB)
fmt.Println(TB)
}//将显示1024 1048576 1073741824 1099511627776表示各单位为多
少byte
bool的初始值为false
complex62和complex128的初始值都为0+0i。
全局变量试用var
局部变量可以省略var
因为go语言是类型安全的语言,所有的类型转换全都是显式的
int——float(float强制转换为int保留整数部分)
string——[]byte
string——[]int
第二章到此结束,主要是够的基本数据类型和定义常量变量。需要特
别注意的是iota和显式转换!
第三章还会再接再厉!
有疑问加站长微信联系(非本文作者)