Go数据类型

目录

 

一、基本数据类型

二、、类型转换

1、与其它主流编程语言的差异

2、测试隐式数据类型转换

3、测试别名隐式数据类型转换

三、类型的预定义值

四、指针类型

1、与其它主要编程语言的差异

2、指针不支持运算

3、string 类型初始化值为空字符


一、基本数据类型

数据类型 关键字 说明
布尔型 bool  
字符型 string  
整形 int、int8、int16、int32、int64 int型会根据操作系统的位数自动变换
无符号整形 uint、uint8、uint16、uint32、uint64、uintptr 1、uint型会根据操作系统的位数自动变换。

2、uintptr是一种可以足够保存指针的值的无符号整型,在32平台下为4字节,在64位平台下为8字节。

字节 byte uint8 的别名
rune rune uint32 的别名,代表 unicode 的编码值,跟字符串相关
浮点型 float32、float64  
复数型 complex64、complex128  

二、、类型转换

1、与其它主流编程语言的差异

  • Go 语言不允许隐式类型转换,其它语言可以小类型往大类型转换。
  • 别名和原有类型也不能进行隐式类型转换。

2、测试隐式数据类型转换

package type_test

import "testing"

//测试一下隐式数据类型转换
func TestImplicit(t *testing.T) {
	var a int32 = 1
	var b int64
	b = a
    //说明在go语言中,就算是小类型也不能往大类型隐式转换
	t.Log(a, b) //cannot use a (type int32) as type int64 in assignment
}

3、测试别名隐式数据类型转换

package type_test

import "testing"

type MyInt int64

//测试一下别名隐式数据类型转换
func TestImplicit(t *testing.T) {
	var a int32 = 1
	var b int64
	b = int64(a) //可以进行显式的类型转换
	var c MyInt  //搞个别名也不能进行隐式类型转换
	c = b
	t.Log(a, b, c) //cannot use b (type int64) as type MyInt in assignment
}

结论:Go语言中对数据类型转换要求非常严苛,不支持任何形式的隐式数据类型转换。

三、类型的预定义值

package type_test

import (
	"math"
	"testing"
)

//类型的预定义值从 math 函数中取
func TestPredefinedVal(t *testing.T)  {
	//最大的64位整形
	t.Log(math.MaxInt64)
	//最大的63位浮点型
	t.Log(math.MaxFloat64)
	//最大的32位无符号整形
	t.Log(math.MaxUint32)
}


四、指针类型

1、与其它主要编程语言的差异

  • 不支持指针运算
  • string 是个值类型,其默认的初始化值为空字符串,而不是 nil

2、指针不支持运算

package type_test

import (
	"testing"
)

//指针
func TestPoint(t *testing.T) {
	a := 1
	//用取址符获取该变量的地址
	aPtr := &a

	//打印出 a 的值和 a 的地址
	t.Log(a, aPtr)					//1, 0xc0000a60d8
	//Logf 用来打印类型,%T:显示变量的数据类型。
	t.Logf("%T %T", a, aPtr)	// int, *int

	//这种指针的运算在 Go 语言中是不支持的
	// aPtr = aPtr + 1
}

3、string 类型初始化值为空字符

package type_test

import (
	"testing"
)


//字符串
func TestString(t *testing.T) {
	var s string

	//说明字符串初始化值是一个空字符串,两个*都挨在一起了
	t.Log("*" + s + "*")	//**
	//字符串的长度是 0
	t.Log(len(s))				//0

	//空字符串判断的写法
	if s == "" {
		t.Log("s is an empty string")
	}
}

:这篇博文是我学习中的总结,如有转载请注明出处:https://blog.csdn.net/DaiChuanrong/article/details/117934361

 

上一篇:你是了解这5个测试概念的人吗?


下一篇:vue-编程基础-脚手架项目结构- 11