Go数据类型 电脑版发表于:2020/7/17 17:41  >#Go 数据类型 [TOC] <br/> 基本数据类型 ------------ <br/> | | | ------------ | | bool | | string | | int int8 int16 int32 int64 | | uint uint8 uint16 uint32 uint64 uintptr | | byte //uint8的别名 | | string //uint32的别名,表示Unicode代码点float32 float64 | | float32 float64 | | complex64 complex128 | <br/> 类型转化 ------------ <br/> >###与其他主要编程语言的差异 1. Go 语言不允许隐式类型转换 2. 别名和原有类型也不能进行隐式类型转换 >###是否可以隐式转换? <br/> >创建一个测试类测试 ```go package type_test import "testing" func TestImpicit(t *testing.T) { var a int =1 var b int64 b=a t.Log(a,b) } ``` >我们发现报错,且不能隐式转换  >我们修改一下代码并进行显示的类型转换 ```go package type_test import "testing" func TestImpicit(t *testing.T) { var a int =1 var b int64 b= int64(a) t.Log(a,b) } ``` >我们发现已经过了测试  >###别名是否可以隐式转换? <br/> >修改一个测试类代码 ```go package type_test import "testing" type MyInt int64 func TestImpicit(t *testing.T) { var a int =1 var b int64 b= int64(a) var c MyInt c= b t.Log(a,b,c) } ``` >我们同样发现报错,且不能隐式转换  >我们修改一下代码并进行显示的类型转换并运行 ```go package type_test import "testing" type MyInt int64 func TestImpicit(t *testing.T) { var a int =1 var b int64 b= int64(a) var c MyInt c= MyInt(b) t.Log(a,b,c) } ```  <br/> 类型的预定义值 ------------ <br/> 1. math.MaxInt64 2. math.MaxFloat64 3. math.MaxUint32 <br/> 指针类型 ------------ <br/> >###与其他主要编程语言的差异 1. 不支持指针运算 2. string 是值类型,其默认的初始化值为空字符串,而不是nil >###是否支持指针运算? <br/> >修改代码 ```go package type_test import ( "fmt" "testing" ) func TestPoint(t *testing.T) { a := 1 aPtr := &a //不支持aPtr进行指针运算的(不过检测) //aPtr = aPtr + 1 //获取类型 fmt.Printf("%T %T", a, aPtr) } ```  >###string类型能否为nil? <br/> >添加新测试方法的代码 ```go package type_test import ( "fmt" "testing" ) func TestString(t *testing.T) { var s string fmt.Println("*" + s + "*") fmt.Println(len(s)) //可以这样判断非空 if s == "" { fmt.Println("s=长度为0的字符串") } //不过检测 // if s != nil { // fmt.Println("s!=nil") // } } ``` 