Go核心语言编程 - 基本数据类型(2)

Go是一种强类型的静态编译语言
Go语言内置了七类基本数据类型
• 布尔类型:bool

var ok bool = true
var ok bool = 1 //error 1是整型字面量

• 整型:byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr

var a int = 1
var b int32 = 2
b = a //error 不同类型的整型必须进行强制类型转换

• 浮点型:float32 float64

var b := 10.00 //浮点数字面量被自动推断为float64类型

• 复数:complex64 complex128
complex64是由两个float32构成的,complex128是由两个float64构成的

var value1 complex64 = 3.1 + 5i
value2 := 3.1 + 6.i
var v = complex(2.1, 3) //构造一个复数
a := real(v) //返回实数部分
b := image(v) //返回复数虚部

• 字符串:string
• 字符串是常量,可以通过索引访问字节单元,但是不能修改

var a = "hello world"
b := a[0]
a[1] = 'b' //error

• 字符串转换成[]bytes要慎用,当字符串太大的时候,要复制一份内存

a := "hello, world"
b := []byte(a)

• 字符串尾部不包含NULL字符,跟C和C++不一样
• 字符串类型底层实现是一个二元的数据结构,一个指针指向字节数组的起点,另一个是长度

// runtime/string.go
type stringStruct struct {
    str unsafe.Pointer
    len int
}

• 基于字符串创建的切片和原字符串指向的相同的底层字符数组(视图),一样不能修改,对于字符串切片操作返回的子串仍然是string,而非slice

a := "hello world"
b := a[0:4]
c := a[1:]

• 字符串可以转换成字节数组,也可以转换成Unicode的字节数组

a := "hello world"
b := []byte(a)
c := []rune(a) //转成Unicode的字节数组

• 字符串的运算

a := "hello"
b := "world"
c := a + b
len(a)

• rune类型
Go内置两种字符类型,一种byte的字节类型(byte是uint的别名),另一种是标识Unicode编码的字符rune,rune在Go内部是int32类型的别名,占用4个字节,Go语言默认是Utf-8类型

参考<<Go语言核心编程>>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • nil 是 interface、function、pointer、map、slice 和 channel 类型变量...
    宋song一阅读 4,287评论 0 0
  • 布尔类型 布尔类型用于表示真假,类型名为bool,只有两个值true和false,占用一个字节宽度,零值为fals...
    imsilence阅读 577评论 0 0
  • Go基本数据类型 Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函...
    付少_Flj阅读 357评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,575评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 1,878评论 4 1