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语言需要求精的地方多,不能放过每一个部分,不然出来的代码就很可能会不够严谨。


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


相关文章
|
2月前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
95 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
2月前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
48 7
|
2月前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
4天前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
52 20
|
2天前
|
存储 监控 算法
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
|
10天前
|
Go C语言
Go语言入门:分支结构
本文介绍了Go语言中的条件语句,包括`if...else`、`if...else if`和`switch`结构,并通过多个练习详细解释了它们的用法。`if...else`用于简单的条件判断;`if...else if`处理多条件分支;`switch`则适用于基于不同值的选择逻辑。特别地,文章还介绍了`fallthrough`关键字,用于优化重复代码。通过实例如判断年龄、奇偶数、公交乘车及成绩等级等,帮助读者更好地理解和应用这些结构。
34 14
|
2月前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
124 71
|
2月前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
121 67
|
24天前
|
存储 监控 算法
内网监控系统之 Go 语言布隆过滤器算法深度剖析
在数字化时代,内网监控系统对企业和组织的信息安全至关重要。布隆过滤器(Bloom Filter)作为一种高效的数据结构,能够快速判断元素是否存在于集合中,适用于内网监控中的恶意IP和违规域名筛选。本文介绍其原理、优势及Go语言实现,提升系统性能与响应速度,保障信息安全。
28 5
|
1月前
|
算法 安全 Go
Go语言中的加密和解密是如何实现的?
Go语言通过标准库中的`crypto`包提供丰富的加密和解密功能,包括对称加密(如AES)、非对称加密(如RSA、ECDSA)及散列函数(如SHA256)。`encoding/base64`包则用于Base64编码与解码。开发者可根据需求选择合适的算法和密钥,使用这些包进行加密操作。示例代码展示了如何使用`crypto/aes`包实现对称加密。加密和解密操作涉及敏感数据处理,需格外注意安全性。
46 14