Bootstrap

Go学习:类型转换需注意的点 以及 类型别名

目录

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)
}

 

;