GO 语言基本数据类型(下)

简介: GO 语言基本数据类型(下)

转义字符


看下图:

334edc4a1b714f418d6459c4a8a4c89a.png


通俗来说:

  • \b
    就是往前挪一格,掩盖挪动的那一格的数据。


ef8022ac42774ad29d220882bcd3a3bf.png

  • \n
    就是换行,这个不用多说(haha)
  • \r
    就是光标回到本行的开头,将\r后面的字符依次覆盖前面的字符。


007126d7fab54913bbe39b61477f3681.png


  • \t
    就是将\t前面的字符串补够8个位置(不够8个位置),不够的话,则从那够了的8个再往后数。

9fb29fa51bf942b1b58fbf4de97c7f88.png

  • \" , \' , \\
    这三个是为了在字符串中能够将,',\打印出来而不是与旁边的"",'',或者是转义匹配。

例如:


50f8d6318519495196e049f5cad47797.png


4.布尔类型


  • 布尔类型也叫bool类型,bool类型数据只允许取值true和false。
  • 布尔类型占1个字节。
  • 布尔类型适于逻辑运算,一般用于程序流程控制。


基本的使用:

package main
import "fmt"
func main(){
        //测试布尔类型的数值:
        var flag1 bool = true
        fmt.Println(flag1) // true
        var flag2 bool = false
        fmt.Println(flag2) // false
        var flag3 bool = 5 < 9
        fmt.Println(flag3) // true,因为5的确小于9:为真
}


5.字符串类型


  • 字符串类型用 string 来定义。
  • 字符串定义后就不能改变了(单指字符串,变量的值可以变)。
  • 字符串可以拼接。
  • 当一个字符串里面有转义的时候最好用 ``Esc下面的按键)括起来(当然转义字符也可以)。
  • 当一个字符串过长时,最好换行,而换行的时候最好将运算符放在一行的最后面,因为如果不是符号在最后面,编译器会自动在这一行的后面加上,我们看不见而已。


示例:

package main
import "fmt"
func main(){
  // 定义一个字符串
  var str1 string = "hello golang"
  fmt.Println(str1) // hello golang
  // 转义字符过多时用``括起来
  var str2 string = `package main
  import "fmt"
  func main(){
    fmt.Println("abc\"d\"efghijklm\\nopqrs\\tuvw")
    // abc"d"efghijklm\nopqrs\tuvw
  }`
  // 字符串拼接
  var str3 string = "hahaha" + "hehehe"
  str3 += "iloveyou"
  fmt.Println(str3) // hahahaheheheiloveyou
  //当一个字符串过长的时候:注意:+保留在上一行的最后
  var str4 string = "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" +
       "def"+ "abc" + "def" + "abc" + "def"+ "abc" + "def" + "abc" + "def"+
    "abc" + "def" + "abc" + "def"+ "abc" + "def" + "abc" + "def"+ "abc" +
    "def" + "abc" + "def"+ "abc" + "def" + "abc" + "def"+ "abc" + "def" + 
    "abc" + "def"+ "abc" + "def"
  fmt.Println(str4)
}


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


在Golang中数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值(默认值又叫零值)。


962500a537234e9094002751deb45d49.png


7.基本数据类型之间的转换


Go在不同类型的变量之间赋值时需要显式转换,并且只有显式转换(强制转换)。

语法形式:

表达式T(v)将值v转换为类型T

T : 就是数据类型

v : 就是需要转换的变量


例如:

package main
import "fmt"
func main(){
  var num1 int = 1000
  var f1 float32 = float32(num1)
  fmt.Println(f1) // 1000
  var f2 float32 = 666.66
  var num2 int = int(f2)
  fmt.Println(num2) // 66
}


但如过一个大的值强制转换为一个不能存放这个大数据的值的类型时,编译器不会报错,但运行后会造成数据的溢出(截断):

例如:

package main
import "fmt"
func main(){
  // 将int64转为int8的时候,编译不会出错的,但是会数据的溢出
  var n1 int64 = 666666
  var n2 int8 = int8(n3)
  // 这里发生了截断
  fmt.Println(n2)//56
}


8.基本数据类型转为string

  • 在程序开发中,我们经常需要将基本数据类型转成string类型。或者将string类型转成基本数据类型。
  • 将基本数据类型转化为string有两种方式:
    1.fmt包中的Sprintf“%参数”要转换的变量注意:原先的变量值不变,只是将面值赋给一个string类型的变量))— 推荐
    2.使用strconv包中的函数。
  • 第一种方式转换如下:
package main
import "fmt"
func main(){
  var n1 int = 19
  var n2 float32 = 4.78
  var n3 bool = false
  var n4 byte = 'a'
  var s1 string = fmt.Sprintf("%d",n1)
  fmt.Printf("s1对应的类型是:%T ,s1 = %q \n",s1, s1)
  var s2 string = fmt.Sprintf("%f",n2)
  fmt.Printf("s2对应的类型是:%T ,s2 = %q \n",s2, s2)
  var s3 string = fmt.Sprintf("%t",n3)
  fmt.Printf("s3对应的类型是:%T ,s3 = %q \n",s3, s3)
  var s4 string = fmt.Sprintf("%c",n4)
  fmt.Printf("s4对应的类型是:%T ,s4 = %q \n",s4, s4)
}


57331e9fcda04437ae519b18a3e5fb25.png

  • 第二种方式转换我们还需了解strconv包,以及包中我们将要用到的函数。

7a0e1867d22947b3813f30d936246ac2.png


根据函数的功能及使用,如下转换:

package main
import(
        "fmt"
        "strconv"
)
func main(){
        var n1 int = 18
        var s1 string = strconv.FormatInt(int64(n1),10)  //参数:第一个参数必须转为int64类型 ,第二个参数指定字面值的进制形式为十进制
        fmt.Printf("s1对应的类型是:%T ,s1 = %q \n",s1, s1)
        var n2 float64 = 4.29
        var s2 string = strconv.FormatFloat(n2,'f',9,64)
        //第二个参数:'f'(-ddd.dddd)  第三个参数:9 保留小数点后面9位  第四个参数:表示这个小数是float64类型
        fmt.Printf("s2对应的类型是:%T ,s2 = %q \n",s2, s2)
        var n3 bool = true
        var s3 string = strconv.FormatBool(n3)
        fmt.Printf("s3对应的类型是:%T ,s3 = %q \n",s3, s3)
}


9.string转为基本数据类型

string转为基本数据类型的方式是使用strconv包中的函数。

c95344a29abe4abb9653b9ef59314e3b.png

239974684e3345c6a852152164fe497d.png

517075e189a24ca6982b15402a471f82.png


下面通过使用函数来代码实现转化:

package main
import(
        "fmt"
        "strconv"
)
func main(){
//1. string 转 bool
        //string-->bool
        var s1 string = "true"
        var b bool
        //ParseBool这个函数的返回值有两个:(value bool, err error)
        //value就是我们得到的布尔类型的数据,err出现的错误
        //我们只关注得到的布尔类型的数据,err可以用_直接忽略
        b , _ = strconv.ParseBool(s1)
        fmt.Printf("b的类型是:%T,b=%v \n",b,b)
//2.  string 转 int64        
        //string---》int64
        var s2 string = "19"
        var num1 int64
        num1,_ = strconv.ParseInt(s2,10,64)
        fmt.Printf("num1的类型是:%T,num1=%v \n",num1,num1)
//3.  string 转 float64        
        //string-->float32/float64
        var s3 string = "3.14"
        var f1 float64
        f1,_ = strconv.ParseFloat(s3,64)
        fmt.Printf("f1的类型是:%T,f1=%v \n",f1,f1)
//4.        
        //注意:string向基本数据类型转换的时候,
        //一定要确保string类型能够
        //转成有效的数据类型,
        //否则最后得到的结果就是按照对应类型的默认值输出
        var s4 string = "golang"
        var b1 bool
        b1 , _ = strconv.ParseBool(s4)
        fmt.Printf("b1的类型是:%T,b1=%v \n",b1,b1)
//5.        
        var s5 string = "golang"
        var num2 int64
        num2,_ = strconv.ParseInt(s5,10,64)
        fmt.Printf("num2的类型是:%T,num2=%v \n",num2,num2)
}


运行结果为:


4f1b77b81c5743f5bb7678c5fe0d3a29.png


可以看到,b1与 num2的值都是默认值。


写在最后


GO语言需要求精的地方多,不能放过每一个部分,不然出来的代码就很可能会不够严谨。


感谢阅读本小白的博客,错误的地方请严厉指出噢!


相关文章
|
5小时前
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
43 0
|
5小时前
|
数据采集 人工智能 搜索推荐
快速入门:利用Go语言下载Amazon商品信息的步骤详解
本文探讨了使用Go语言和代理IP技术构建高效Amazon商品信息爬虫的方法。Go语言因其简洁语法、快速编译、并发支持和丰富标准库成为理想的爬虫开发语言。文章介绍了电商网站的发展趋势,如个性化推荐、移动端优化和跨境电商。步骤包括设置代理IP、编写爬虫代码和实现多线程采集。提供的Go代码示例展示了如何配置代理、发送请求及使用goroutine进行多线程采集。注意需根据实际情况调整代理服务和商品URL。
快速入门:利用Go语言下载Amazon商品信息的步骤详解
|
5小时前
|
存储 编译器 Go
Go语言学习12-数据的使用
【5月更文挑战第5天】本篇 Huazie 向大家介绍 Go 语言数据的使用,包含赋值语句、常量与变量、可比性与有序性
40 6
Go语言学习12-数据的使用
|
5小时前
|
Java Go
一文带你速通go语言指针
Go语言指针入门指南:简述指针用于提升效率,通过地址操作变量。文章作者sharkChili是Java/CSDN专家,维护Java Guide项目。文中介绍指针声明、取值,展示如何通过指针修改变量值及在函数中的应用。通过实例解析如何使用指针优化函数,以实现对原变量的直接修改。作者还邀请读者加入交流群深入探讨,并鼓励关注其公众号“写代码的SharkChili”。
14 0
|
5小时前
|
存储 缓存 Java
来聊聊go语言的hashMap
本文介绍了Go语言中的`map`与Java的不同设计思想。作者`sharkChili`是一名Java和Go开发者,同时也是CSDN博客专家及JavaGuide项目的维护者。文章探讨了Go语言`map`的数据结构,包括`count`、`buckets指针`和`bmap`,解释了键值对的存储方式,如何利用内存对齐优化空间使用,并展示了`map`的初始化、插入键值对以及查找数据的源码过程。此外,作者还分享了如何通过汇编查看`map`操作,并鼓励读者深入研究Go的哈希冲突解决和源码。最后,作者提供了一个交流群,供读者讨论相关话题。
16 0
|
5小时前
|
Java Go
Go语言学习11-数据初始化
【5月更文挑战第3天】本篇带大家通过内建函数 new 和 make 了解Go语言的数据初始化过程
19 1
Go语言学习11-数据初始化
|
5小时前
|
自然语言处理 安全 Java
速通Go语言编译过程
Go语言编译过程详解:从词法分析(生成token)到句法分析(构建语法树),再到语义分析(类型检查、推断、匹配及函数内联)、生成中间码(SSA)和汇编码。最后,通过链接生成可执行文件。作者sharkchili,CSDN Java博客专家,分享技术细节,邀请读者加入交流群。
24 2
|
5小时前
|
Java Linux Go
一文带你速通Go语言基础语法
本文是关于Go语言的入门介绍,作者因其简洁高效的特性对Go语言情有独钟。文章首先概述了Go语言的优势,包括快速上手、并发编程简单、设计简洁且功能强大,以及丰富的标准库。接着,文章通过示例展示了如何编写和运行Go代码,包括声明包、导入包和输出语句。此外,还介绍了Go的语法基础,如变量类型(数字、字符串、布尔和复数)、变量赋值、类型转换和默认值。文章还涉及条件分支(if和switch)和循环结构(for)。最后,简要提到了Go函数的定义和多返回值特性,以及一些常见的Go命令。作者计划在后续文章中进一步探讨Go语言的其他方面。
13 0
|
5小时前
|
JavaScript 前端开发 Go
Go语言的入门学习
【4月更文挑战第7天】Go语言,通常称为Golang,是由Google设计并开发的一种编程语言,它于2009年公开发布。Go的设计团队主要包括Robert Griesemer、Rob Pike和Ken Thompson,这三位都是计算机科学和软件工程领域的杰出人物。
15 1
|
5小时前
|
Go