目录
1. 类型转换
2. 类型别名
1. 类型转换
在从前的学习中,知道布尔bool类型变量只有两种值true或false,C/C++、Python、JAVA等编程语言中,如果将布尔类型bool变量转换为整型int变量,通常采用 “0为假,非0为真”的方式,但是这个方式在Go语言中行不通。
Go语言中不允许隐式转换,所有类型转换必须显式声明,而且转换只能发生在两种相互兼容的类型之间。
注意:
- 能够转换的类型称为兼容类型,不能转换的类型叫做不兼容类型
- bool类型不能转换为int
var flag bool
flag = true
fmt.Printf("flag = %t\n", flag) //%t , bool类型占位符
//bool 不能 转换为int
fmt.Printf("flag = %d\n", int(flag)) //ERROR报错
- int整型也不能转换为bool
//0为假,非0为真
//整型 不能 转换为bool
flag = bool(1) //ERROR,报错
- 字符类型本质上就是整型(ASCII码),因此可以相互转换
var ch byte
ch = 'a'
var t int
t = int(ch) //类型转换,把ch的值取出来后,转成int再给t赋值
2. 类型别名
关键字:type
格式:
- 单个变量:type 别名 原名
- 多个变量:
type (
别名 原名
别名 原名
)
package main
import "fmt"
func main() {
//给int64起一个别名
type bigint int64 //int64类型改名为bigint
var a bigint
fmt.Printf("a type is %T\n", a)
//同时给多个变量起别名
type (
long int64
char byte
)
var b long = 11
var ch char = 'a'
fmt.Printf("b = %d, ch = %c\n", b, ch)
}