golang 基础之数据类型

变量数据类型

image

整数类型

image

 int8 超出地址范围

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

	fmt.Println(h)
}
// 执行结果
// PS D:\golang\goproject\src\src01\go_code> go run src\chapter03\demo05\main.go
// # command-line-arguments
// src\chapter03\demo05\main.go:7:15: cannot use -129 (untyped int constant) as int8 value in variable declaration (overflows)

  

 无符号 

image

 浮点型

基本介绍

golang的浮点类型可以表示一个小数,比如123.4,7.8,0.12

image

 

说明

1)关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位

示例

import (
	"fmt"
	// "unsafe"
)
func main(){

	var price float32 = 89.32
	fmt.Println("price=",price)
	var num1 float32 = -0.00089
	var num2 float64 = -76534567.09
	fmt.Println("num1=",num1)
	fmt.Println("num2=",num2)

}
// 执行结果
// price= 89.32
// num1= -0.00089
// num2= -7.653456709e+07

  

2)尾数位部分可能丢失,造成精度损失-123.0000901

示例

package main

import (
	"fmt"
	// "unsafe"
)
func main(){

	// var price float32 = 89.32
	// fmt.Println("price=",price)
	// var num1 float32 = -0.00089
	// var num2 float64 = -76534567.09
	// fmt.Println("num1=",num1)
	// fmt.Println("num2=",num2)
	var num3 float32 = -123.0000901
	var num4 float64 = -123.0000901
	fmt.Println("num3=",num3,"num4=",num4)
}
// 执行结果
//num3= -123.00009 num4= -123.0000901

  说明: flota64 精度比float32的要准确

       说明:如果希望保存一个精度高的数,则应该选择float64位

3)浮点型的存储分为三部分:符号位+指数位+尾数位在存储过程中,精度会丢失

浮点型使用细节

1)golang 浮点型有固定的范围和字段长度,不受具体OS的影响

2)golang 的浮点型默认声明float64类型

package main

import (
	"fmt"
	// "unsafe"
)
func main(){

	var  num5 = 1.1
	fmt.Printf("num5的数据类型是%T",num5)
}
// 执行结果
//num5的数据类型是float64

  

3)浮点型常量有两种表示形式

十进制数形式:如:5.12  .512 (必须有小数点)

package main

import (
	"fmt"
	// "unsafe"
)
func main(){

	num6 := 5.12
	num7 := .123
	fmt.Println("num6=",num6,"num7=",num7)
	 
}
// 执行结果
//num6= 5.12 num7= 0.123

  

科学计数法形式: 如:5.1234e2 = 5.12*10的2次方 5.12E-2 = 5.12/10的2次方

package main

import (
	"fmt"
	// "unsafe"
)
func main(){

	num8 := 5.1234e2//5.1234e2 *10的2次方
	fmt.Println("num8=",num8)

	 
}
// 执行结果
//num8= 512.34

  示例2

package main

import (
	"fmt"
	// "unsafe"
)
func main(){

	num8 := 5.1234e2//5.1234e2 *10的2次方
	num9 := 5.1234E2//5.1234e2 *10的2次方
	num10 := 5.1234E-2//5.1234e2 /10的2次方
	num11 := 5.1234e-2//5.1234e2 /10的2次方
	fmt.Println("num8=",num8,"num9=",num9,"num10=",num10,"num11=",num11)

	 
}
// 执行结果
//num8= 512.34 num9= 512.34 num10= 0.051234 num11= 0.051234

  

4)通常情况下,应该使用float64,因为它比float32更精确

 字符类型

基本介绍

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

package main

import "fmt"

func main(){
	var c1 byte = 'a'
	var c2 byte = '0'
	// 当我们直接输出byte值,就是输出了对应的字符的码值
	fmt.Println("c1=",c1)
	fmt.Println("c2=",c2)
	//如果我们希望输出对应字符,需要使用格式化输出
	fmt.Printf("c1 = %c c2 = %c\n", c1,c2)
	var c3 int = '北'
	fmt.Println("c3=",c3)
	fmt.Printf("c3=%c",c3)

}
// 执行结果
// c1= 97  
// c2= 48
//c1 = a c2 = 0
// c3= 21271
// c3=北

  说明:1)如果我们保存的字符在ASCII表的,比如[0~1,a-z,A-Z]直接可以保存到byte

                  2)如果我们保存的字符对应码值大于255,这时我们可以考虑使用int类型保存

       3)如果我们需要按照字符的方式输出,我们需要格式化输出即fmt.Printf("c3=%c",c3)

字符串就是一串固定长度的字符连接起来的字符序列,Go的字符串是由单个字节链接起来的,也就是说对于传统的字符串是由字符组成的,而go的字符串不同,是由字节组成[官方将string归属到基本数据类型]

字符类型使用细节

1)字符常量是用单引号''括起来的单个字符。例如var c1 byte = 'a' 

2) Go 中允许使用转义字符'\'来将其后面的字符转变为特殊字符型常量。例如,var c3 char = "\n" // '\n'表示换行符

3) Go 语言的字符使用UTF-8 编辑

4) 在Go中,字符的本质是一个整数,直接输出时,是该字符对应该的UTF-8编码的码值

5)可以直接给某个变量赋值一个数字,然后按格式化输出时%c会输出该数字对应的unicode

6) 字符类型是可以进行运算的,相当于一个整数,因为它对应有Unicode

 

posted @ 2025-12-11 15:07  烟雨楼台,行云流水  阅读(4)  评论(0)    收藏  举报