Go语言基础--数据类型(整型、字符型)

转义字符

        常用的转义字符有如下:

        1)\t :  表示一个制表符,通常使用它可以排版。

        2)\n:换行符

        3)\\:一个\

        4) \":一个"

        5)\r:一个回车

数据类型概述

        在 Go 编程语言中,数据类型用于声明函数和变量。

        数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

整型

有符号整型

  1. int8:8位整型,表示范围是-128到127。
  2. int16:16位整型,表示范围是-32,768到32,767。
  3. int32:32位整型,表示范围是-2,147,483,648到2,147,483,647。
  4. int64:64位整型,表示范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
  5. int:这是一个特殊的整型,其大小在不同的平台(32位或64位)上可能不同。在32位系统上,它的大小与int32相同;在64位系统上,它的大小与int64相同。它是Go的默认整型。

无符号整型

  1. uint8:8位无符号整型,表示范围是0到255。通常用于表示字节(byte)或字符(rune的别名)。
  2. uint16:16位无符号整型,表示范围是0到65,535。
  3. uint32:32位无符号整型,表示范围是0到4,294,967,295。
  4. uint64:64位无符号整型,表示范围是0到18,446,744,073,709,551,615。
  5. uintptr:一个无符号整型,其大小足以存储指针。在32位系统上,它的大小与uint32相同;在64位系统上,它的大小与uint64相同。uintptr通常用于低级编程,如系统调用或与C语言库交互。

    //fmt.Printf() 可以用于做格式化输出。

            fmt.Printf("a 的 类型 %T \n", a)

    //如何在程序查看某个变量的占用字节大小和数据类型 

            var b int64 = 101

    //unsafe.Sizeof(n2) 是unsafe包的一个函数,可以返回n1变量占用的字节数

            fmt.Printf("b 的 类型 %T  b占用的字节数是 %d ", b, unsafe.Sizeof(b))

字符型

        字符概念

                在Go语言中,字符类型具有独特的特点和表示方式。字符是构建字符串的基本单位,用于表示文本和字符数据。Go语言中的字符类型使用Unicode编码,这意味着它可以表示世界上各种语言的字符,包括英文字母、数字、标点符号以及各种特殊字符和符号。

        字符种类

                虽然Go语言在类型系统中没有直接称为“字符”的基本类型(如C语言中的char),但它提供了几种方式来处理字符数据:

  1. rune类型
    • Go语言使用rune类型来表示Unicode码点。rune实际上是int32类型的别名,用于处理Unicode字符。每个Unicode字符都对应一个唯一的码点,而rune类型能够存储这些码点。
    • 使用rune类型可以方便地处理多字节字符(如汉字),因为Unicode字符可能由多个字节组成,而rune类型能够确保每个字符都被正确地表示和处理。
  2. byte类型
    • 在Go语言中,byte类型也是处理字符的一种方式,但它主要用于表示ASCII字符集中的字符。byte实际上是uint8类型的别名,用于存储单个字节的数据。
    • 对于只包含ASCII字符的文本,可以使用byte类型来处理。然而,对于包含Unicode字符(如汉字、特殊符号等)的文本,使用byte类型可能不够方便,因为Unicode字符可能由多个字节组成。
  3. 字符串类型(string)
    • 字符串类型(string)在Go语言中用于表示一串字符的序列。字符串是由字节组成的,但这些字节使用UTF-8编码来表示Unicode文本。
    • 字符串在Go语言中是不可变的,一旦创建就不能直接修改其内容。如果需要修改字符串,通常的做法是将字符串转换为rune切片或byte切片,进行修改后再转换回字符串。

        字符操作

        在Go语言中,可以使用多种方式对字符进行操作,包括:

  • 字符的赋值和读取:可以使用rune类型或byte类型来存储和读取字符。
  • 字符的拼接:可以使用+操作符将字符或字符串进行拼接。
  • 字符的遍历:可以使用for循环和range关键字遍历字符串中的字符,此时遍历的变量类型会根据上下文自动推断为runebyte
  • 字符的格式化输出:可以使用fmt.Printf等函数和格式化占位符(如%c)来输出字符。

        Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存

package main  

import "fmt"  

func main() {  

    // 示例1:字符与码值的直接输出与格式化输出  

    var c1 byte = 'a'  

    var c2 byte = '0' // 字符的'0'  

    // 直接输出byte值,显示的是字符的UTF-8编码的码值(对于ASCII字符,UTF-8编码与ASCII码相同)  

    fmt.Println(c1, c2) // 输出:97 48  

    // 使用格式化输出%c显示字符  

    fmt.Printf("c1=%c, c2=%c\n", c1, c2) // 输出:c1=a, c2=0  

    // 示例2:Unicode字符与码值的处理  

    var c3 int = '王' // 注意:这里虽然可以编译,但最好使用rune来存储Unicode字符  

    fmt.Printf("c3=%c, c3对应的码值%d\n", rune(c3), c3) // 显式转换为rune以正确显示字符  

    // 示例3:数字与字符的转换  

    var c4 int64 = 19996 // '王'的Unicode码值  

    fmt.Printf("c4=%c\n", rune(c4)) // 显式转换为rune以显示字符  

    // 示例4:字符的运算  

    // 字符运算实际上是码值之间的运算  

    var n1 = 10 + 'a' // 'a'的ASCII码是97,所以结果是107,对应ASCII码表中的字符'k'  

    fmt.Println("n1=", n1, "对应的字符是", string(n1)) // 使用string()将整数转换为字符串表示,但注意这里实际上显示的是'k'  

    // 备注:  

    // 1. 字符在计算机中是以其对应的码值(整数)形式存储的。  

    // 2. 字符和码值的对应关系由字符编码表决定,Go语言使用UTF-8编码。  

    // 3. Go中没有专门的char类型,通常使用byte(针对ASCII字符)或rune(针对Unicode字符)来表示字符。  

    // 4. 字符常量用单引号括起来,如'a'、'中'等。  

    // 5. Go支持转义字符,如'\n'表示换行符。  

    // 6. 字符类型在Go中可以进行运算,因为它们在内部是以整数(码值)形式存在的。  

}

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值