变量的定义以及使用

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

浮点类型使用的细节

  1. go浮点类型有固定的范围喝字段长度 不受具体的OS(操作系统)的影响
  2. go 的浮点类型默认声明为float64 类型
  3. 浮点型常量有两种表示形式 十进制 跟科学计数法的形式
  4. 通常情况下 使用的是 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语言基础 基本数据类型使用相关推荐

  1. Go语言基础之数据类型

    Go语言基础之数据类型 Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. ...

  2. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个.1>.数据类型关键字(12个)char,sh ...

  3. C语言基础专题 - 数据类型与强制类型转换(编辑中)

    C语言 - 数据类型与强制类型转换 1.C数据类型 可以参考的相关知识链接: C语言基础专题 - 指针 C语言基础专题 - 数组 C语言基础专题 - 字符串 C语言基础专题 - 结构体 C语言基础专题 ...

  4. java语言基础与go语言基础,数据类型区别

    一:数据类型 1.java语言的数据类型 (1)整数类型 int 数据类型是32位.有符号的, 4个字节,以二进制补码表示的整数: 最小值是 -2,147,483,648(-2^31): 最大值是 2 ...

  5. 1.3 Go语言基础之数据类型

    Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. 一.整型 1.1 基本类 ...

  6. c语言字符型数据怎么输入输出,C语言基础之数据类型与输入/输出

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 常用的进位制 R进制数只采用R个基本数字符号,R称为数制的基数,数制中每一固定位置对应的单位值称为权,进位原则是逢R进1 ...

  7. c语言复杂数据类型存储,C语言基础-复杂数据类型

    指针 指针是C语言中用的最多的一个知识点,它是用来储存地址的,储存地址的这个变量就成为指针. 屋子上面的门牌号就相当于指针(地址),屋子里的空间就相当于内存. 指针与字符串 定义字符串的两种方式: 1 ...

  8. 01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

    1. Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字(被Java赋予特殊意义的单词,注意所有关键字都是小写):   goto和const保留了它们,但是 ...

  9. 【C语言基础】-数据类型大小

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.基本数据类型 整型 字符型 实型(浮点型) 二.构造数据类型 数组类型 结构体类型 结构体匿名声明 结构体对齐方式 ...

最新文章

  1. SpringBoot部署脚本,拿走即用!
  2. 空间直角坐标系与球面坐标互转
  3. boost::function_types::is_callable_builtin用法的测试程序
  4. java that关键字_Java中this关键字的几种用法
  5. tsql是mysql中的吗_Mysql中的sql是如何执行的
  6. android studio 导入包分不分动态静态,详解Android studio 动态fragment的用法
  7. 10打开没有反应_118个遇水反应化学品清单及高压反应釜操作经验
  8. 诗与远方:无题(七十九)- 望红云而作
  9. Jfinal集成Spring
  10. ipv4转ipv6 在线工具_TOOLFK在线工具-在线文字转语音/语音合成mp3工具
  11. CH340以及CH系列USB转串口驱动下载
  12. linux上进行base64编码解码
  13. 理解和应用向量积与数量积
  14. 【SpringBoot实现企业微信会话内容存档】linux部署
  15. 手机网页版微信分享以及微信授权
  16. nn.Sigmoid torch
  17. 论文解读:Deep-4MCW2V:基于序列的预测指标,以鉴定大肠杆菌中的N4-甲基环胞嘧啶位点
  18. VUE实战--网易云音乐
  19. JavaScript之排他思想详述
  20. css层叠排版,请收下这72个炫酷的CSS技巧

热门文章

  1. 移除元素(每日一题)
  2. 关于MATLAB控制E4438C等信号源的研究
  3. H5、CSS3照片墙的实现
  4. 2022完整盛大大多功能系统源码+抢单功能
  5. 转 94fbr 找到注册码的把戏
  6. SAP 会计凭证更改(FB02) 配置及注意事项
  7. 美团外卖众包打卡第四天,住34楼电梯坏了帮买矿泉水送上楼
  8. 一个怂怂的女生的想法
  9. 恢复计算机硬盘数据,如何恢复电脑硬盘数据,恢复硬盘数据的方法
  10. 计算机考研基础必考知识点,2019计算机考研高数49个基础知识点(必知)