目录:
@
注意事项
- 省略调用和别名不能同时使用
- go关键字25个,都是小写
- 常量,变量,类型,接口,结构,首字母大写就是public,首字母小写是private,一个包是一个整体
- 常量,变量,一般类型(非struct,interface)都可以组合成组
- var只能声明全局变量,也可以在函数体里面用,但是不建议这样用
- type:自定义类型,可以用来更改类型的名字
数据类型
- bool: 1 byte, only have value of "true" and "false"
- int/uint: 32bits/64bits depend on the platform
- (八位整型)int8/uint8(byte): 1 byte, -128127/0255
- (16位整型)int16/uint16: 2byte, -215~215-1/0~2^16-1
- (32位整型) int32(rune)/uint32: 4byte, -231~231-1/0~2^32-1 rune是字符型
- (64位整型) int64/uint64: 8byte, -263~263-1/0~2^64-1
- (浮点型,没有double)float32/float64: 4/8byte , account to 7、15 deciaml palces(精确到小数点后7/15位)
- (复数)complex64/complex128
- 含指针的32位或者64位 int:uintptr
类型零值
即默认值,通常为0,bool为false,string为空字符串
单个变量的声明和赋值
//声明:
var num int
//赋值
num=40
//声明的同时赋值,类型可以省略,也可以把var省略,用:=
var num int = 40
var num2 = 41
num3 := 43
多个变量的声明赋值
- 全局变量的声明可以使用var()和并行方式简写,但是,var不能省略,即不能用:=
- 类型推断即省略类型名,所有情况都可以
- 函数体内的局部变量不能使用var()的方式简写,但是能用:=和并行简写
//全局变量:
var (
aaa="hello"
ddd, hhh=1,2
)
//函数体内的局部变量声明同时赋值才能使用:=,不能使用var()形成组
var f,g,h,j int
f,g,h,j=1,2,3,4
var a,b,c,d int = 1,2,3,4
var a,b,c,d = 1,2,3,4
a,b,c,d := 1,2,3,4
a, _, c,d := 1,2,3,4 //a=1,c=3,d=4
变量的类型转换
- Go不存在隐式转换,所有类型转换必须显示声明
- 转换只能发生在两种相互兼容的类型之间
var a float32 = 1.1
b := int(a)
c := 65
d := string(c)
fmt.Println(d)
//输出A
//string()表示将数据转换成文本格式,将65 对应于A,在unicode编码中,要是想输出字符65 ,就要引入包strconv
e := strconv.Itoa(c)
fmt.Println(e)
常量的定义
- 常量一般全部大写字母,特殊情况可以只首字母大写,此时为public,如果想定义为private,就在最前面加下划线或者小写c(表示const)表示private
- 常量的值在编译的时候就已经确定
- 常量的定义格式和变量基本相同
- 等号右边必须是常量或者表达式
- 常量表达式中的函数必须是内置函数
const B = 'A'
const (
text = "123"
length = len(text)
num = B * 20
)
- 常量初始化规则:在定义常量组const()时,如果不给初始值,则默认使用上一行的表达式
- 使用相同的表达式不代表具有相同的值
- iota是常量的计数器,初始我0,一个组中每定义一个常量,计数器加一
- 通过初始化规则和iota可以达到枚举的效果
- 没遇到一个const关键字,iota就会重置为0