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天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
23 2
|
9天前
|
JavaScript Java Go
探索Go语言在微服务架构中的优势
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出。本文将深入探讨Go语言在构建微服务时的性能优势,包括其在内存管理、网络编程、并发模型以及工具链支持方面的特点。通过对比其他流行语言,我们将揭示Go语言如何成为微服务架构中的一股清流。
|
3天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
11 2
|
3天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
14 2
|
8天前
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
30 7
|
8天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
38 5
|
8天前
|
安全 Go
用 Zap 轻松搞定 Go 语言中的结构化日志
在现代应用程序开发中,日志记录至关重要。Go 语言中有许多日志库,而 Zap 因其高性能和灵活性脱颖而出。本文详细介绍如何在 Go 项目中使用 Zap 进行结构化日志记录,并展示如何定制日志输出,满足生产环境需求。通过基础示例、SugaredLogger 的便捷使用以及自定义日志配置,帮助你在实际开发中高效管理日志。
25 1
|
7天前
|
程序员 Go
go语言中的控制结构
【11月更文挑战第3天】
84 58
|
6天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
7天前
|
存储 编译器 Go
go语言中的变量、常量、数据类型
【11月更文挑战第3天】
25 9