Go语言入门到实战——03Go语言里的数据类型

Go语言入门到实战——00主目录
在上一讲中我们已经学习了go语言里的变量和常量以及测试编写。这一章我们进入go语言数据类型的学习。
在这里插入图片描述

go语言在类型转换方面其他主流语言的区别在于:

1.不允许隐式类型转换
2.不允许别名和与原有类型进行转换

1.不允许隐式类型转换举例

package typetest

import "testing"

func TestType(t *testing.T) {
	//这里我的pc是64位机,也就是说其实这里的int就是int64,但是从下面的结果中我们可以看出
	//这无法完成类型的隐式转换(将var a int 改为var a int32还是一样的结果)
	var a int = 1
	var b int64 = 2
	b = a
	t.Log(a, b)
}

在这里插入图片描述

package typetest

import "testing"

func TestType(t *testing.T) {
	//byte其实就是int8的一种别名类型
	var a byte = 1
	var b int8 = 2
	b = a
	t.Log(a, b)
}

在这里插入图片描述
2.不允许别名和与原有类型进行转换举例

package typetest

import "testing"
//给int64起个别名为MyInt
type MyInt int64

func TestType(t *testing.T) {
	var a byte = 1
	var b MyInt
	//这里依然无法进行隐式类型转化
	b = a
	t.Log(a, b)
}

在这里插入图片描述
前面讲了许多例子来证明无法进行隐式类型转换,但是强制类型转换还是可以的如下:

package typetest

import "testing"

type MyInt int64

func TestType(t *testing.T) {
	var a byte = 1
	var b MyInt = (MyInt)(a)
	t.Log(a, b)
}

在这里插入图片描述
3.类型的预定义值

1.math.MaxInt64
2.math.MaxFloat64
3.math.MaxUint32

4.指针类型

1.不支持指针类型的运算,但是支持指针类型
2.string默认的初始化值为空字符串,而不是空指针nil
func TestPointer(t *testing.T) {
	a := 1
	b := &a               //和c或者c++里面是类似的,使用取址符号即可
	t.Log(a, b)           //输出a和b的值
	t.Logf("%T %T", a, b) //Logf就是格式化输出,%T可以保证输出a,b的类型
}

在这里插入图片描述
上面我们介绍了简单的指针的使用的例子,但是下面这个要强调的是go不支持指针运算的特性。

func TestPointer(t *testing.T) {
	a := 1
	b := &a //和c或者c++里面是类似的,使用取址符号即可
	b = b + 1//从下面可以发现他并不支持指针运算
}


接下来我们验证string类型的初始值:

func TestString(t *testing.T) {
	var s string
	t.Log("|" + s + "|")
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值