Go语言基础 基本数据类型使用
变量的定义以及使用
golang 变量使用的细节
第一种:指定变量类型,声明后若不赋值 使用默认值
package main
import ("fmt"
)
func main() {// 赋值的情况 定义一个 int 类型的变量 赋值为10var i inti=10fmt.Println("i=",i)
}
## 结果
PS D:\golang\go_helloword\src\go_code\project01\main> go run test.go
i= 10
#############################################################################
package main
import ("fmt"
)
func main() {// 赋值的情况 定义一个 int 类型的变量 赋值为10var i intfmt.Println("i=",i)
}
PS D:\golang\go_helloword\src\go_code\project01\main> go run test.go
i= 0
第二种 根据值自行判定变量类型(类型推导)
package main
import ("fmt"
)
func main() {var name="tom"fmt.Println("name= ",name)
}
PS D:\golang\go_helloword\src\go_code\project01\main> go run test.go
name= tom
第三种 省略var 注意 := 左侧的变量不应该是已经声明过的 否则会导致编译错误
package main
import ("fmt"
)
func main() {// 这种方式等价 var name string="tom"name:="tom"fmt.Println("name = ",name)
}
PS D:\golang\go_helloword\src\go_code\project01\main> go run test.go
name = tom
多变量声明
package main
import ("fmt"
)
func main() {//如何一次性声明多个变量
// var n1,n2 int
// fmt.Println("n1",n1,"n2",n2)
// 一次性声明多个变量的方式2
// var n1,name,n3=100,"tom",888
// fmt.Println("n1=",n1,"name=",name,"n3=",n3)
//类型推导n1,name,n3:=100,"tom加",888
fmt.Println("n1=",n1,"name=",name,"n3=",n3)
}
变量的数据类型
整数的类型
package main
import ("fmt""unsafe"
)
func main() {// int uint rune byte 的使用var a int =8900fmt.Println("a=",a)var b uint =1var c byte =255fmt.Println("b=",b,"c="c)// 整型的使用细节var n1=100fmt.Println("n1 的类型 %T \n",n1)var n2 int64 =10fmt.Println("n2 的类型 %T n2 占用的字节数是 %d",n2,unsafe.Sizeof(n2))
}
整型的使用细节
1,go 各整数类型分 :有符号喝无符号 int uint 的大小喝系统有关
2,go 的整型默认声明为int 型
3,如何在程序查看某个变量的字节大小和数据类型
4,go 程序中整型变量在使用时 遵守保小不保大的原则 即 在保证程序正确运行下 尽量使用占用空间小的数据类型
5,bit 计算机中的最小存储单位 byte 计算机中基本存储单元
浮点类型
浮点类型的分类
说明一下:
1 关于浮点数在机器中存放形式的简单说明 浮点数=符号位+指数位+尾数位
2 尾数部分可能丢失 造成精度损失
3 浮点型的存储分为三个部分 符号位+指数位+尾数位 在存储过程中 精度会有丢失。
package mainimport "fmt"func main() {var num1 float32 = -0.00089var num2 float64 = -5997487.09fmt.Println(num1, num2)// 尾数部分丢失 造成精度损失var num3 float32 = -123.0000901var num4 float64 = -123.0000901fmt.Println(num3, num4)
}C:\Users\86152\AppData\Local\Temp\GoLand\___go_build_gopl_helloword.exe
// 结果
-0.00089 -5.99748709e+06
-123.00009 -123.0000901
浮点类型使用的细节
- go浮点类型有固定的范围喝字段长度 不受具体的OS(操作系统)的影响
- go 的浮点类型默认声明为float64 类型
- 浮点型常量有两种表示形式 十进制 跟科学计数法的形式
- 通常情况下 使用的是 float64 因为比 float 32 更加精准。
字符类型(char)
go 中没有专门的字符类型 如果要存储单个字符 (例如字母)一般使用byte 来保存
字符串就是一串固定长度的字符链接起来的字符序列 GO 的字符串是由单个字节链接起来的也就是说多个传统的字符组成 而GO的字符串不同 它是由字节组成的
基本使用
package mainimport "fmt"func main() {var c1 byte = 'a'var c2 byte = '0' // 这个是字符的0//当我们直接输出byte值 就是输出了对应的字符的码fmt.Println("c1 ==", c1)fmt.Println("c2 ==", c2)// 如果希望输出的对应字符 需要做格式化fmt.Printf("c1=%c x2=%c", c1, c2)
}
// 结果
C:\Users\86152\AppData\Local\Temp\GoLand\___go_build_gopl_Stringtest.exe
c1 == 97
c2 == 48
c1=a x2=0
**1,如果是在ASCII 表的 比如【0-1,a_z,A-Z】直接用byte 存储 **
2,如果我们保存的字符对应码值大于255这时我们就可以考虑用int 类型保存
3,如果我们需要安装字符的方式输出 只需要格式化fmt.Printf(“c1=%c x2=%c”, c1, c2)
布尔类型
1,布尔类型也叫bool 类型 bool 类型数据只允许取值 true 和flase
2,bool 类型占1个字节
3,boolean 类型始于逻辑运算 一般用于程序流程控制 注:这个后面会详细介绍
if 条件控制语句
for循环控制语句
package mainimport "fmt"func main() {var c1 bool = truefmt.Println(c1)// 注意事项 布尔类型
}
字符串类型 :String
基本介绍
字符串就是一串固定长度的字符链接起来的字符序列 Go 的字符串是由单个字节连接起来的 GO 语言的字符串使用的UTF-8 编码标识 Unicode 文本
package mainimport "fmt"
func main() {name := "冯娇娇"fmt.Println("name:=", name)
}
注意事项喝使用的细节
1, go 语言的字符串的字节使用UTF-8 编码标识Unicode 文本 这样go 统一使用 utf-8 编码乱码问题就没有了
2, 字符串一旦赋值了 字符创就不能修改了 在Go 中字符串是不可变的。
3,字符串的两种表示形式
(1),双引号 如上面所示 但是会识别转义字符
(2)反引号 以字符串的原生形式输出 包括换行喝特殊字符 可以实现防止攻击,输出源代码
package mainfunc main() {test := `fdjbeti[jghetopjhijryhi4t6uj80hyjnhpknoyrkhjryo
`println(test)
}
基本数据类型默认值
基本数据类型一览表
基本数据类型的转换
go 和java/c 不同 Go 在不同类型的变量之间赋值时需要显式转换 也就是说 go 不会自动转换
基本语法
表达式T(v)将值v 转换为类型T
T:就是数据类型 比如int32 int64 float32 …
V:就是需要转换的变量
案例演示
package mainimport "fmt"func main() {var i int32 = 100// 把i 转换=》floatvar n2 float32 = float32(i)var n3 int32 = int32(i)fmt.Println(n2, n3)fmt.Printf("n3=%T", n3)
}
C:\Users\86152\AppData\Local\Temp\GoLand\___go_build_gopl_Stringtest.exe
100 100
n3=int32
Process finished with the exit code 0
基本数据类型的转换
1,GO 中数据类型的转换可以是从表示范围小–> 表示范围大 也可以 范围大–> 范围小
2,被转换的是变量存储的数据(即值)变量本身的数据类型并没有变化
3,在转换中 比如将int64 转成int8 编译时不会报错 只是转换的结果是按照溢出处理
基本数据类型和String
基本类型转string 类型
第一种 fmt.Sprintf
1,fmt.Sprintf(“%参数”,表达式)
2,参数需要喝表达式的数据类型相匹配
3,fmt.Sprintf 会返回转换后的字符串
package mainimport "fmt"func main() {var num int = 99num1 := 45.66b := true// 用fmt.Sprintf 转换str := fmt.Sprintf("%d", num)fmt.Sprintf("%d", num1)fmt.Sprintf("%d", b)fmt.Printf("str type%T", str)
}
第二种方法 strconv 函数转换
package mainimport (//"fmt""strconv"
)func main() {var num int = 99num1 := 45.66b := truestrconv.Itoa(num) strconv.FormatInt(int64(num),10)strconv.FormatFloat(num1,'f',10,64)strconv.FormatBool(b)
}
String 转换基本数据类型
package mainimport ("fmt""strconv"
)
func main() {str := "123"i, _ := strconv.ParseInt(str, 0, 64)fmt.Println(i)str1 := "true"parseBool, _ := strconv.ParseBool(str1)fmt.Println(parseBool)str2 := "45.66"// ,_ 的意思是有两个返回值 但是我当前只需要在意第一个 第二个可以写成_表示忽略float, _ := strconv.ParseFloat(str2, 64)fmt.Println(float)
}
在将string类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如我们可以把"123",转成一个整数,但是不能把"hello”转成一个整数,如果这样做,Golang直接将其转成0
Go语言基础 基本数据类型使用相关推荐
- Go语言基础之数据类型
Go语言基础之数据类型 Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. ...
- C语言基础知识-数据类型
C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个.1>.数据类型关键字(12个)char,sh ...
- C语言基础专题 - 数据类型与强制类型转换(编辑中)
C语言 - 数据类型与强制类型转换 1.C数据类型 可以参考的相关知识链接: C语言基础专题 - 指针 C语言基础专题 - 数组 C语言基础专题 - 字符串 C语言基础专题 - 结构体 C语言基础专题 ...
- java语言基础与go语言基础,数据类型区别
一:数据类型 1.java语言的数据类型 (1)整数类型 int 数据类型是32位.有符号的, 4个字节,以二进制补码表示的整数: 最小值是 -2,147,483,648(-2^31): 最大值是 2 ...
- 1.3 Go语言基础之数据类型
Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. 一.整型 1.1 基本类 ...
- c语言字符型数据怎么输入输出,C语言基础之数据类型与输入/输出
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 常用的进位制 R进制数只采用R个基本数字符号,R称为数制的基数,数制中每一固定位置对应的单位值称为权,进位原则是逢R进1 ...
- c语言复杂数据类型存储,C语言基础-复杂数据类型
指针 指针是C语言中用的最多的一个知识点,它是用来储存地址的,储存地址的这个变量就成为指针. 屋子上面的门牌号就相当于指针(地址),屋子里的空间就相当于内存. 指针与字符串 定义字符串的两种方式: 1 ...
- 01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)
1. Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字(被Java赋予特殊意义的单词,注意所有关键字都是小写): goto和const保留了它们,但是 ...
- 【C语言基础】-数据类型大小
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.基本数据类型 整型 字符型 实型(浮点型) 二.构造数据类型 数组类型 结构体类型 结构体匿名声明 结构体对齐方式 ...
最新文章
- SpringBoot部署脚本,拿走即用!
- 空间直角坐标系与球面坐标互转
- boost::function_types::is_callable_builtin用法的测试程序
- java that关键字_Java中this关键字的几种用法
- tsql是mysql中的吗_Mysql中的sql是如何执行的
- android studio 导入包分不分动态静态,详解Android studio 动态fragment的用法
- 10打开没有反应_118个遇水反应化学品清单及高压反应釜操作经验
- 诗与远方:无题(七十九)- 望红云而作
- Jfinal集成Spring
- ipv4转ipv6 在线工具_TOOLFK在线工具-在线文字转语音/语音合成mp3工具
- CH340以及CH系列USB转串口驱动下载
- linux上进行base64编码解码
- 理解和应用向量积与数量积
- 【SpringBoot实现企业微信会话内容存档】linux部署
- 手机网页版微信分享以及微信授权
- nn.Sigmoid torch
- 论文解读:Deep-4MCW2V:基于序列的预测指标,以鉴定大肠杆菌中的N4-甲基环胞嘧啶位点
- VUE实战--网易云音乐
- JavaScript之排他思想详述
- css层叠排版,请收下这72个炫酷的CSS技巧