Go数据类型 电脑版发表于:2020/7/17 17:41 ![go数据类型](https://img.tnblog.net/arcimg/hb/0dd243ae49394f12beed84237bfee1a3.jpg "go数据类型") >#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) } ``` >我们发现报错,且不能隐式转换 ![](https://img.tnblog.net/arcimg/hb/153b3ee95a874b1ab1c9421418798e85.png) >我们修改一下代码并进行显示的类型转换 ```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) } ``` >我们发现已经过了测试 ![测试](https://img.tnblog.net/arcimg/hb/f1ed5bc2abe349e088c1137b5ea71fbb.png "测试") >###别名是否可以隐式转换? <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) } ``` >我们同样发现报错,且不能隐式转换 ![](https://img.tnblog.net/arcimg/hb/2ff2e42f850b43029328d55f2b6cc0f0.png) >我们修改一下代码并进行显示的类型转换并运行 ```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) } ``` ![](https://img.tnblog.net/arcimg/hb/dcd93c9bb5db439181c53f56821f56e4.png) <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) } ``` ![](https://img.tnblog.net/arcimg/hb/b2c7310297fb42ae9bca305dac71f070.png) >###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") // } } ``` ![](https://img.tnblog.net/arcimg/hb/97d650f883e74862b1661e781ee2edf0.png)