基本类型
1.基本类型列表
类型 长度 说明
bool 1 true/false,默认false, 不能把非0值当做true(不用数字代表true/false)
byte 1 uint8 别名
rune 4 int32别名。 代表一个unicode code point
int/unit 一来所运行的平台,32bit/64bit
int8/uint8 1 -128 ~ 127; 0 ~ 255
int16/uint16 2 -32768 ~ 32767; 0 ~ 65535
int32/uint32 4 -21亿 ~ 21亿, 0 ~ 42亿
int64/uint64 8
float32 4 精确到7位小数,相当于c的float
float64 8 精确到15位小数,相当于c的double
complex64 8
complex128 16
uintptr 足够保存指针的32位、64位整数,指针(可以存指针的整数型)
array 值类型,数组
struct 值类型,结构体
string 值类型,字符串类型,常用
slice 引用类型,切片
map 引用类型,字典
channel 引用类型,通道
interface 接口类型,接口
function 函数类型,函数
</div>
2.类型转换
不支持隐式类型转换,必须进行显式类型转换
转换只发生在两种互相兼容的类型之间: 各类int不允许相互赋值或操作,不然会在编译时报错
<type>(expression)
</div>
示例
package main
import "fmt"
func main(){
a := 0x1234
b := 1234.56
c := 256
fmt.Printf("%x\n", uint8(a))
fmt.Printf("%d\n", int(b))
fmt.Printf("%f\n", float64(c))
}
</div>
结果
34
1234
256.000000
</div>
3.类型别名
type t_str string
var b t_str = "a str"
</div>
4.类型默认值
声明不赋值,类型零值,非空值,而是声明后的默认值
bool: false
integers: 0
floats: 0.0
string: ""
pointers,functions,interfaces,slices,channels,maps: nil
</div>
保留字
break case chan const continue
default defer else fallthrough for
func go goto if import
interface map package range return
select struct switch type var
</div>
变量
1.变量声明
//第一种,指定变量类型,声明后若不赋值,使用默认值
var v_name v_type
v_name = value
//第二种,根据值自行判定变量类型
var v_name = value
//第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误.
v_name := value
e.g.
var a int = 10
var b = 10
c : = 10
</div>
示例:
package main
var a = 1234
var b string = "hello"
var c bool
func main(){
println(a, b, c)
}
</div>
结果:
1234 hello false
</div>
2.多变量声明:
//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断
vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误
//类型不同多个变量, 全局变量, 局部变量不能使用这种方式
var (
vname1 v_type1
vname2 v_type2
)
</div>
示例:
package main
var x, y int
var ( //这种只能出现在全局变量中,函数体内不支持
a int
b bool
)
var c, d int = 1, 2
var e, f

