golang变量类型,转换方式,注意事项

1.变量的数据类型

1.1基本数据类型

  • 1.数值型
  • 整数类型 int uint byte rune
  • 浮点类型 foat
  • 2.字符型(使用byte来保存单个字母字符)
  • 3.布尔型 bool
  • 4.字符串

1.2派生/复杂数据类型

  • 指针,数组,结构体,管道,函数,切片,接口,map

整数的各个类型
1.int有符号,的取值范围,和uint无符号的取值范围,默认是看计算机是几位,64位的话是占8个字节
2.rune与int32一样,表示一个Unicode码储存中文。
3.byte等于uint8(存字符时使用)
4.Golang的整形默认声明为int型
5.Golang程序中,遵循保小不保大的原则,尽量使用占用空间小的数据类型
6.1byte=8bit
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用unsafe,这个包来查看n2的字节

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	var n2 int64 = 10

	fmt.Printf("n2的类型%T n2占用的字节数%d", n2, unsafe.Sizeof(n2))

}

1.3小数类型/浮点型

1.小数类型就是用于存放小数的,比如1.2 0.65 -6.6
在这里插入图片描述

2.浮点数=符号位+指数位+尾数位,浮点数都是有符号的
3.尾数部分可能丢失,造成精度的损失。64位的精度比32的要准确
4.浮点型有固定的范围,字段长度,不受os(操作系统)的影响。
5.Glong的浮点型默认声明为float64类型
6. 十进制数形式.555=0.555
7. 科学计数法
在这里插入图片描述

1.4字符类型

1.byte是按字符来保存数字的

  • 直接输出的话,输出的就是ascll表字符码值
  • 如果需要输出对应的字符,需要使用格式化输出c = %c(格式化输出)fmt.Printf
  • 如果输出"北"会溢出255的值,用int就可以储存,c = %c %d 就是对应的码值
    2.Golang中没有专门的字符类型,如果存储单个字符一帮用baye来保存
    3.go的字符串是由各个字节组成起来。字符串是由字符组成的,go字符串不同,他是由字节组成的
    4.go语言是用UTF-8编码,包含ascll(最多255)英文是1个字节,汉子是3个字节
    5.在go中字符本质就是一个整数,直接输出就是UTF-8码值
    6.字符类型是可以进行运算的,相当于一个整数,运算时时按码值运行
    7.Println :可以打印出字符串,和变量
    Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量
    在这里插入图片描述

1.5布尔类型:bool

1.布尔型也叫bool类型,bool类型数据值允许取值true和false
2.bool类型只占一个字节
3.bool是用来逻辑运算的,一般用于流程控制

  • if条件控制语句
  • for循环控制语句
    4.不能用0或者非0来代替false和ture

1.6字符串类型:string

1.字符串就是固定长度的字符连接起来的字符序列,Go的字符串是由当个字节连接起来的,go语言的字符串hi字节使用UTF-8
标识Unicode文本的。
2.字符串一旦修改就不能去修改str的内容,即go中字符串是不可变的
3.字符串由两种类型

  • 双引号,会识别转义字符,
  • 反引号` ,不识别转义字符,可以实现防止攻击,输出源代码等效果
  • 可以用拼接的方式,+
  • 当一行太多是,需要用多行字符,注意要把+保留在上一行

2.基本数据类型的默认值

1.当程序员数据类型都有一个默认值,当程序员没有赋值时,默认值又叫0值
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串“”。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil。

3.Golang基本数据类型转换

  • go在不同类型不同类型的变量直接赋值时需要显示转换,也就是说golang中数据类型不能直接转换
  • 基本语法
  • 表达式T(v)将值转换为类型T
  • T:就是数据类型,比如int32.int64等
  • v:就是需要转换的变量
    在这里插入图片描述
  • go中数据类型可以从范围小到大,也可以大到小
  • 被转换的是变量存储的数据(即值),变量本身的数据并没有变化
  • 在转换中,int64转成int8,编译时不会报错,只是只是按溢出处理,和我们希望的结果不一样
    在这里插入图片描述

4.基本数据类型和string的转换

在程序开发过程中基本数据类型,转成string,或者将string转成基本数据类型

方法1

 func Sprintf

func Sprintf(format string, a ...interface{}) string

Sprintf根据format参数生成格式化的字符串并返回该字符串
package main

import "fmt" //下划线表示忽略这个包

func main() {
	//y演示glang中基本数据类型转成string使用
	var num1 int = 99
	var num float64 = 23.456
	var b bool = true
	var mychar byte = 'h'
	var str string // 空的str
	//使用第一种方式,fmt.sprintf方法
	str = fmt.Sprintf("%d", num1)
	fmt.Printf("str type %T  str%v\n", str, str)
	str = fmt.Sprintf("%f", num)
	fmt.Printf("str type %T  str%v\n", str, str)
	str = fmt.Sprintf("%t", b)
	fmt.Printf("str type %T  str%q\n", str, str)
	str = fmt.Sprintf("%c", mychar)
	fmt.Printf("str type %T  str%q\n", str, str)
}

方法2,使用strconv包的函数

在这里插入图片描述

3.go里面的转义字符

在这里插入图片描述

4.string类型转基本类型

使用strconv这个包的函数(parse)

package main

import (
	"fmt"
	"strconv"
)

// 演示golang中string转成基本数据类型
func main() {
	var str string = "true"
	var b bool
	//这个函数会返回两个值  func ParseBool(str string) (value bool, err error)
	//因为我只想获取到value bool,不想获取这个歌err,所有我使用这个_忽略
	b, _ = strconv.ParseBool(str)
	fmt.Printf("b type %T b=%v\n", b, b)

	var str2 string = "1234590"
	var num1 int64
	var n2 int
	n2 = int(num1)
	num1, _ = strconv.ParseInt(str2, 10, 64)
	fmt.Printf("b type %T b=%v\n", num1, num1)
	fmt.Printf("b type %T b=%v\n", n2, n2)

}

因为返回的都是int64或者float64,希望得到int32,float32

var num5 int 32

num = int32

5.注意

  • go里面双引号是字符串,单引号是字符,rune。
  • 在将string数据类型转成基本数据类型是,要确保string数据类型能够转成有效数据,比如我们把“123”
    转成一个整数,但是不能把“hello”转成一个整数,如果这样做,golang直接将其转成0,或者默认值,其他类型一样的到理。
  • 最后在说,函数的用法都是由设计者的习惯见解,强制性的,根据手则的使用即可
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值