Go数据类型

目录

一、基本数据类型

二、、类型转换

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

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

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

三、类型的预定义值

四、指针类型

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

2、指针不支持运算

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


一、基本数据类型

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

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

字节byteuint8 的别名
runeruneuint32 的别名,代表 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

上一篇Go数组和切片

下一篇Go Map

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值