【go数据类型】

一、go基本数据类型

内置七类基本数据类型(20各具体子类型):
布尔类型:bool
整型:byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr
浮点型:float32(4个字节) float64(8个字节)
复数:complex64 complex128
字符:rune
字符串:string
错误:error

派生/复杂数据类型:
指针、数组、结构体、管道、函数、切片、接口、map

二、整数数据类型使用

用来存放整数值,比如0,-1,1111等

有符号整数第一位是符号
在这里插入图片描述

package main

import "fmt"

func main() {
	var i int = 1
	fmt.Println("i=", i)
	var j int8 = -129
	fmt.Println("j=", j)

}

int8 范围-128~127 ,超过这个范围,编译错误

无符号,第一位不是符号:
在这里插入图片描述
在这里插入图片描述

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	var i int = 1
	fmt.Println("i=", i)
	var j int16 = -10
	fmt.Println("j=", j)
	fmt.Printf("j的类型是 %T j的字节数是 %d ", j, unsafe.Sizeof(j))
	//unsafe.Sizeof(j)返回j占用的字节数
}

输出:

PS D:\goproject\src\go_code\chaptor1\demo06> go run .\main.go
i= 1
j= -10
j的类型是 int16 j的字节数是 2

bit:计算机中最小存储单位,byte:计算机中基本存储单位。1 byte=8 bit

三、浮点数

go内置两种浮点数类型,分别是float32和float64
1、浮点数字面量被自动类型和推断为float64类型。

package main
import "fmt"

func main() {
	var b  = 10.00
	fmt.Printf("b的数据类型是%T", b)

}
PS D:\goproject\src\go_code\chaptor1\demo7> go run .\main.go   
b的数据类型是float64

2、一般使用float64,比float32更准确。

四、字符char

go中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte保存

package main

import (
	"fmt"
)

func main() {
	var a = 'A'
	var b = 'B'
	fmt.Println("a=",a)
	fmt.Println("b=",b)//直接输出byte值,就是输出对应字符的码值
	fmt.Printf("a=%c b=%c", a, b)
	//格式化输出对应字符
}

输出

PS D:\goproject\src\go_code\chaptor1\demo8> go run .\main.go   
a= 65
b= 66
a=A b=B

五、bool

(1)bool类型只允许取值true和false
(2)占一个字节

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	var a = false
	fmt.Println("a=",a)
	fmt.Println("a占用的空间=", unsafe.Sizeof(a))

}

输出

PS D:\goproject\src\go_code\chaptor1\demo9> go run .\main.go   
a= false
a占用的空间= 1

六、字符串string

字符串是一串固定长度的字符连接起来的字符序列。go的字符串是由字节组成,使用UTF-8编码,字符串一旦被赋值,字符串就不能修改。
字符串的两种表示形式:
(1)双引号,会识别转义字符
(2)反引号,以字符串的原生形式输出,包括换行和特殊字符

package main

import (
	"fmt"
)

func main () {
	var a  string = "玄武湖"
	fmt.Println("a是", a)
	b := "NJ\nBJ"
	fmt.Println(b)
	c :=  `
	PS D:\goproject\src\go_code\chaptor1\demo10> go run .\main.go     
a是 玄武湖
	`
	fmt.Println(c)
}

输出

PS D:\goproject\src\go_code\chaptor1\demo10> go run .\main.go     
a是 玄武湖
NJ
BJ

        PS D:\goproject\src\go_code\chaptor1\demo10> go run .\main.go
a是 玄武湖

七、基本数据类型默认值

整型:0
浮点型:0
字符串:“”
bool:false

package main
import "fmt"

func main () {
	var a int
	var b float32
	var c float64
	var d bool
	var e string
	fmt.Printf("a=%d,b=%v,c=%v,d=%v,e=%v",a,b,c,d,e)
	//%v表示按照变量的值输出
}

输出

PS D:\goproject\src\go_code\chaptor1\demo11> go run .\main.go     
a=0,b=0,c=0,d=false,e=

八、基本数据类型的相互转换

(1)go在不同数据类型的变量之间赋值时需要显示转换,不能自动转换;
(2)被转换的是变量存储的数据,变量本身的数据类型不会变化;
(3)转换过程中,int64转成int8(-128~127),会做溢出处理;
(4)

package main 

import "fmt"

func main () {
	var i int32 = 100
	var n1 float32 = float32(i)
	var n2 int64 = int64(i)
	fmt.Printf("i=%v, n1=%v, n2=%v", i, n1,n2)
}

输出

PS D:\goproject\src\go_code\chaptor2\demo1> go run .\main.go      
i=100, n1=100, n2=100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值