Golang语言数据类型分类及进制转换案例

简介: 这篇文章详细介绍了Go语言中数据类型的分类、进制转换的概念和实例,以及数字字面量语法,还涉及了原码、反码和补码的相关知识。

                                              作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.数据类型概述

Go语言的基本类型和其他语言大同小异,数据类型分为基本数据类型和高级(派生)数据类型。

1.基本数据类型

数值型:
    - 整数类型(int,int8,int16,int32,int64,uint8,uint16,uint32,uint64,byte,rune)
    - 浮点类型(float32,float64)
    - 复数(complex64,complex128)

字符型:
    - 没有单独的字符型,使用byte类型来保存单个字母字符。

布尔型:
    - 对应的类型为bool,有效值为: true|false

字符串:
    - 对应string。

2.高级数据类型

- 指针
- 数组
- 结构体
- 管道
- 函数
- 切片
- 接口
- map

二.进制和进制转换

1.进制概述

所谓"进制"就是"逢几进1"的问题,平时生活中用的最多的就是: 十进制。

计算机用二进制最多。

计算机如何区分进制呢?
    - 二进制:
        要求以"0b"开头,如:"0b101"

    - 八进制:
        要求以0开头,如:"017"。

    - 十进制:
          就是我们平时所写,所见即所得,比如: "99"。

    - 十六进制:
        要求以"0x"或者"0X"开头,如:"0x1F"

2.进制转换案例

- 二进制转换为十进制:
    比如: "0b1101"
    计算过程: 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 8 + 4 + 0 + 1 = 13


- 十进制转换为二进制:
    比如: "13"
    计算过程: 将余数部分倒过来读,得到的二进制为"0b1101"。
      除数              | 被除数        | 余数
      2                    13            
      2                    6                    1
      2                    3                    0
      2                    1                    1
                           0                    1


- 八进制转换为十进制:
    比如: "017"
    计算过程:    1*8^1 + 7*8^0 = 8 + 7 = 15


- 十进制转换为八进制:
    比如: "25"
    计算过程: 将余数部分倒过来读,得到的八进制为"031"。
      除数            | 被除数               | 余数
      8                    25            
      8                    3                    1
                           0                    3


- 八进制转换为16进制:
    比如: "015"
    解题思路: 把十进制当作一个中转站,先将八进制转换为十进制,再把十进制转换为十六进制。
    温馨提示: 实际上根本就不用自己转换这么麻烦,我们可以直接使用系统中提供给我们的计算器(程序员模式),或者在线进制转换的网页进行操作即可。

3.数字字面量语法(Number literals syntax)

package main

import (
    "fmt" // 我们可以借助fmt函数来将一个整数以不同进制形式展示。
)

func main() {
    // 注意,系统默认识别的是十进制数字哟~
    var a int = 10
    fmt.Printf("a ---> %d \n", a) // 10    占位符%d表示整形,默认以十进制显示哟~
    fmt.Printf("a ---> %b \n", a) // 1010  占位符%b表示二进制

    // Go1.13版本之后引入了数字字面量语法,这样便于开发者以二进制、八进制或十六进制浮点数的格式定义数字

    // 二进制 以b开头
    b := 0b1010
    fmt.Printf("b ---> %d \n", b) // 10
    fmt.Printf("b ---> %b \n", b) // 1010

    // 八进制  以0开头
    var c int = 077
    fmt.Printf("c ---> %d \n", c) // 63
    fmt.Printf("c ---> %o \n", c) // 77  占位符%o表示八进制,原样输出八进制数字。
    fmt.Printf("c ---> %O \n", c) // 0o77  占位符%O表示八进制,在原样输出的八进制数字前多了一个"0o"哟~

    // 十六进制  以0x开头
    var d int = 0xff
    fmt.Printf("d ---> %d \n", d) // 255
    fmt.Printf("d ---> %x \n", d) // ff  占位符%x表示十六进制,输出是小写字母
    fmt.Printf("d ---> %X \n", d) // FF  占位符%X表示十六进制,输出是大写字母
}

三.原码反码补码

推荐阅读:
      https://www.cnblogs.com/yinzhengjie/p/8666354.html
目录
相关文章
|
14天前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
47 4
Golang语言之管道channel快速入门篇
|
14天前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
42 3
Golang语言之gRPC程序设计示例
|
14天前
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
37 4
|
14天前
|
Go 调度
Golang语言goroutine协程篇
这篇文章是关于Go语言goroutine协程的详细教程,涵盖了并发编程的常见术语、goroutine的创建和调度、使用sync.WaitGroup控制协程退出以及如何通过GOMAXPROCS设置程序并发时占用的CPU逻辑核心数。
23 4
Golang语言goroutine协程篇
|
14天前
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
20 3
Golang语言之Prometheus的日志模块使用案例
|
14天前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
37 4
Golang语言文件操作快速入门篇
|
14天前
|
Go
Golang语言错误处理机制
这篇文章是关于Golang语言错误处理机制的教程,介绍了使用defer结合recover捕获错误、基于errors.New自定义错误以及使用panic抛出自定义错误的方法。
36 3
|
14天前
|
Go
Golang语言之函数(func)进阶篇
这篇文章是关于Golang语言中函数高级用法的教程,涵盖了初始化函数、匿名函数、闭包函数、高阶函数、defer关键字以及系统函数的使用和案例。
16 3
Golang语言之函数(func)进阶篇
|
14天前
|
Go
Golang语言之函数(func)基础篇
这篇文章深入讲解了Golang语言中函数的定义和使用,包括函数的引入原因、使用细节、定义语法,并通过多个案例展示了如何定义不返回任何参数、返回一个或多个参数、返回值命名、可变参数的函数,同时探讨了函数默认值传递、指针传递、函数作为变量和参数、自定义数据类型以及返回值为切片类型的函数。
17 2
Golang语言之函数(func)基础篇
|
14天前
|
Go
Golang语言之映射(map)快速入门篇
这篇文章是关于Go语言中映射(map)的快速入门教程,涵盖了map的定义、创建方式、基本操作如增删改查、遍历、嵌套map的使用以及相关练习题。
21 5