Go 语言编程 — 基本数据类型

妖狐艹你老母 2023-10-06 12:25 158阅读 0赞

目录

文章目录

  • 目录
  • Golang 的数据类型
  • 基本数据类型
    • 布尔型(Boolean)
    • 数字类型(Numeric)
      • 整型
      • 浮点型
      • 其他
    • 字符串类型(String)
      • 更改字符串数值
      • 多行字符串

Golang 的数据类型

在这里插入图片描述

Golang 的数据类型通常可以区分为:

  • 基本类型:Boolean,Numeric,String 类型。
  • 派生类型:Array,Struct,Slice,Map,Pointer,Function,Channel,Interface 类型。可以使用 type 语句构造。可以细分为:

    • Aggregate:Array,Struct。
    • Reference:Slice,Map,Pointer,Function,Channel。
    • Interface。

注:其中 Array,Struct 是定长的,而 Slice,Map 是变长的。

基本数据类型

布尔型(Boolean)

  • True
  • False

数字类型(Numeric)

整型

  • int8:有符号 8 位整型,[-128, 127]
  • uint8:无符号 8 位整型,[0, 255]
  • int16:有符号 16 位整型,[-32768, 32767]
  • uint16:无符号 16 位整型,[0, 65535]
  • int32:有符号 32 位整型,[-2147483648, 2147483647]
  • uint32:无符号 32 位整型,[0, 4294967295]
  • int64:有符号 64 位整型,[-9223372036854775808, 9223372036854775807]
  • uint64:无符号 64 位整型,[0, 18446744073709551615]

浮点型

  • float32:32 位浮点型数
  • float64:64 位浮点型数
  • complex64:32 位实数和虚数
  • complex128:64 位实数和虚数

其他

  • byte:uint8 的别名
  • rune:int32 的别名
  • uint:32 或 64 位,取决于操作系统
  • int:32 或 64 位,取决于操作系统
  • uintptr:无符号整型指针

字符串类型(String)

字符串的本质是一串固定长度的字符连接起来的字符序列。区别于 C 语言中的字符串是由若干个字符组成的,而 Golang 的字符串是由若干个字节连接起来的。

Golang 的字符串的字节使用 UTF-8 编码标识 Unicode 文本。字符串数据类型的定义很简单,使用双引号 “ “ ” 或者反引号 “ ` ”来创建。区别在于:双引号之间的转义符会被转义,而反引号之间的字符保持不变。

另外,Golang 与 C 语言一样,单引号 “ ’ ” 用于标识一个字符。可以使用 string(char) 将一个字符转换成一个包含了单个字符的字符串。

  1. var c = 'c'

示例:

  1. package main
  2. import "fmt"
  3. func main() {
  4. var a string = "hello \n world"
  5. var b string = `hello \n world`
  6. fmt.Println(a)
  7. fmt.Println(b)
  8. }

结果:

  1. hello
  2. world
  3. hello \n world

更改字符串数值

注意,因为 Golang 中的字符串本质是由若干个(已编码)的字节组成的。所以,数据类型可以看作是一个常量类型,一旦赋值了就不能再修改。

  1. var s = "hello world"
  2. s[0] = 'c' // 报错

如果实在需要修改字符串,则应该这么做:

  1. func main() {
  2. var s1 string = "hello"
  3. c := []rune(s1) // 将 s1 转换为 rune 数组。
  4. c[0] = 'c' // 修改数组的第一个元数。
  5. var s2 string = string(c) // 创建新的字符串 s2,强制类型转换 c 数值。
  6. fmt.Println("%s \n", s2)
  7. }

rune() 函数是 int32 的别名,用 UTF-8 进行编码。当我们需要遍历字符串的字符时,可以用于混换每个字节。

简而言之,为了获得字符串每个实际的字符,需要使用 rune 类型:

  1. var s = "你好"
  2. fmt.Println(len(s))
  3. c := []rune(s)
  4. fmt.Println(len(c),c)

结果:

  1. 6
  2. 2 [20320 22909]

多行字符串

当需要书写多行字符串时候需要注意,因为 Golang 会在每行的行末自动添加分号,所以字符串连接符 “+” 一定要放在换行的行末:

  1. // 正确
  2. s := "Starting part" +
  3. "Ending part"
  4. // 错误
  5. s := "Starting part"
  6. + "Ending part"

也可以考虑使用反引号,但此时 s 中也包含了换行符,因为反引号中间的字符会保持不变。所以通常用在多行打印的情况:

  1. package main
  2. import "fmt"
  3. func main() {
  4. s := `Starting part
  5. Ending part`
  6. fmt.Println(s)
  7. }

输出:

  1. Starting part
  2. Ending part

发表评论

表情:
评论列表 (有 0 条评论,158人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Go——基本数据类型

    基本数据类型 G0是一种强类型的静态编译语言,类型是高级语言的基础,有了类型,高级语言才能对不同类型抽象出不同的运算,编程者才能在更高的抽象层次上操纵数据,而不用关注具体

    相关 go语言基本数据类型

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