【Duke】数据类型 004 - PingPongGooo/GoFoundation GitHub Wiki

基本数据类型

bool

string

int int8 int16 int32 int64

uint uint8 uint16 uint32 uint64 uintptr

byte //alias for uint8

rune // alias for int32, represents a Unicode Code point

float32 float64

complex64 complex128

类型转化

与其他主要编程语言的差异

  1. Go 语言不允许隐式类型转换
  2. 别名和原有类型也不能进行隐式类型转换
package type_test

import "testing"

type MyInt int64

func TestImplicit(t *testing.T)  {
	var a int = 1
	var b int64
	b = int64(a)
	var c MyInt = MyInt(b)
	t.Log(a,b,c)
}

类型的预定义值

1.math.MaxInt64

2.math.MaxFloat64

3.math.MaxUint32

指针类型

与其他主要编程语言的差异 1.不支持指针运算 2.string是值类型,其默认值的初始化值为空字符串,而不是nil

重要!!! string是值类型,其默认值的初始化值为空字符串,而不是nil

func TestPoint(t *testing.T)  {
	a:=1
	aPtr := &a
	t.Log(a,aPtr)
	t.Logf("%T %T", a,aPtr)
	//aPtr = aPtr + 1 //会编译报错。go 不支持 指针运算。
}
func  TestString(t *testing.T)  {
	var s string // 默认值的初始化值为空字符串 ,而不是nil
	t.Log("*"+s+"*")
	t.Log(len(s))
}

Go不支持任何类型的隐式类型转换

Go支持指针,但是不支持指针运算

Go中string是值类型。默认初始化值是空字符串,而不是nil