go语言学习笔记 — 基本数据类型 — 原生数据类型:数字类型、布尔类型、字符串类型、派生类型

数据类型的出现是为了区分所需内存大小不同的数据。在编程时,我们需要用到大数据结构时才需要申请大内存,这样就可以充分利用内存。在go编程语言中,数据类型用于声明函数和变量。

1. 基本类型

go的基本类型分为4类

序号 类型 描述
1 布尔型 布尔型的值只能是常量true或者false。一个简单的例子:var b bool = true
2 数字类型 整型int,浮点型float32、float64,Go语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码
3 字符串类型 字符串就是一串固定长度的字符连接起来的字符序列。go语言字符串是由单个字节连接起来的。Go语言字符串的字节使用UTF-8编码标识Unicode文本
4 派生类型 包括:指针类型(Pointer)、数组类型、结构化类型(struct)、Channel类型、函数类型、切片类型、接口类型(interface)、Map类型

1.1 布尔类型

序号 类型 描述
1 bool 长度:1字节(8b,8位2进制数),取值范围:true,false(不可用1,0代表true,false)

注:布尔型无法参与数值运算,也无法与其他类型进行转换。


1.2 数字类型

  • 整型与无符号整型

Go语言也有基于架构的类型,例如int、uint和uintptr。

序号 类型 描述
1 8位整型int8/uint8 长度:1字节(8b,8位2进制数,2^8);取值范围:-128 ~ 127 / 0 ~ 255(对于有符号数,负数部分:-(2位数/2),0占1个数,正数部分:(2位数/2)- 1,即 -(2^位数/2) ~(2^位数/2)- 1)
2 16位整型int16/uint16 int16对应C语言中的short型,长度:2字节;取值范围:- 2^16/2 ~ 2^16/2 - 1 / 0 ~ 2^16 - 1
3 32位整型int32/uint32 长度:4字节;取值范围:- 2^32/2 ~ 2^32/2 - 1 / 0 ~ 2^32 - 1
4 64位整型int64/uint64 int64对应C语言中的long型,长度:8字节;取值范围:- 2^64/2 ~ 2^64/2 - 1 / 0 ~ 2^64 - 1

注:在实际使用中,slice或者map的元素数量等都可以用int来表示。反之,在二进制传输、读写文件的结构描述时,为了保持文件结构不会受到不同编译目标平台字节长度的影响,不要使用int和uint。

  • 浮点型
序号 类型 描述
1 float32 4字节,32位浮点型数,精确到7位小数
2 float64 8字节,64位浮点型数,精确到15位小数。math包中所有函数均适用float64
3 complex64 8字节,32位实数和虚数,实部/虚部都是一个float32
4 complex128 16字节,64位实数和虚数,实部/虚部都是一个float64。math/cmplx包中所有复数相关的函数均适用complex128
package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Printf("%f\n", math.MaxFloat32)

	fmt.Printf("%.2f\n", math.MaxFloat64)
}
  • 其他数字类型

以下列出了其他更多的数字类型

序号 类型 描述
1 字节型byte uint8的别名,等同于uint8使用
2 rune int32的别名,等同于int32的使用,表示一个Unicode编码
3 整型int/uint 根据运行平台,可为32位或64位;取值范围:-2^32/2 ~ 2^32/2 - 1 或 - 2^64/2 ~ 2^64/2 - 1
4 无符号整型uintptr 用于存放一个指针值的无符号整型,根据运行平台,可为unit32或unit64

1.3 字符串类型

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


1.4 派生类型

接口类型:inteface

函数类型:func
注意:函数可以赋给变量

引用类型:slice、map、chan

其他值类型:array、struct


2. 实例

输出各种类型的变量

package main

import (
	"fmt"
)

func main() {
	var a bool
	a = true
	var b int8
	b = -128
	var c rune
	c = 100000
	var d byte
	d = 255
	var e uintptr
	var f float32
	f = -2000.23123
	var g complex64
	g = 32.12 + 32i

	fmt.Println(a, b, c, d, e, f, g)
}

go1.9版本对于数字类型,无需定义int及float32、float64,系统会自动识别。

package main

import "fmt"

func main() {
   var a = 1.5
   var b = 2
   fmt.Println(a,b)
}

字符串去除空格和换行符

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "这里是 www\n.runoob\n.com"
	fmt.Println("-------- 原字符串 ----------")
	fmt.Println(str)
	// 去除空格
	str = strings.Replace(str, " ", "", -1)
	// 去除换行符
	str = strings.Replace(str, "\n", "", -1)
	fmt.Println("-------- 去除空格与换行后 ----------")
	fmt.Println(str)
}

在Go中,布尔值的类型为bool,值是true或false,默认为false。

// 全局变量声明
var isActive bool   // 默认bool值为false
var enabled, disabled = true, false  // 忽略类型的声明

func test() {
    var available bool  // 一般声明
    valid := false      // 简短声明
    available = true    // 赋值操作
}

你可能感兴趣的:(Golang)