golang学习笔记01——基本数据类型

基本类型

虽然从底层而言,所有的数据都是由比特组成,但计算机一般操作的是固定大小的数,如整数、浮点数、比特数组、内存地址等。进一步将这些数组织在一起,就可表达更多的对象,例如数据包、像素点、诗歌,甚至其他任何对象。Go语言提供了丰富的数据组织形式,这依赖于Go语言内置的数据类型。这些内置的数据类型,兼顾了硬件的特性和表达复杂数据结构的便捷性

基本数据类型长度(字节)默认值说明
bool1false
byte10byte是uint8的别名
rune40Unicode Code Point,rune是int32的别名
int,uint4or8032 or 64位
int8,uint810-128 ~ 127, 0 ~ 255
int16,uint1620-32768 ~ 32767, 0 ~ 65535
int32,uint3240-21亿~ 21亿, 0 ~ 42亿
int64,uint6480
float3240.0
float6480.0
complex648
complex12816
uintptr4or8这是一个整数类型!!!,以存储指针的uint32 or uint64整数
复杂类型长度(字节)默认值说明
array值类型
struct值类型
string“”utf-8字符串
slicenil引用类型
mapnil引用类型
channelnil引用类型
interfacenil接口
functionnil函数

整型

Go语言中整形被分为三大类:int 、uint、uintptr
这三种类型的长度是跟据程序所在的操作系统来决定长度的:

- int 和 uint 在32位操作系统上,它们使用32位,4个字节,在64拉操作系统上,它们使用64位,8个字节。
- uintptr 的长度被设定为存储指针的 uint32 或 uint64 整数

int 和uint又被称为有符号整形和无符号整形

  • int
- int8 取值范围:-128 ~ 127
- int16 取值范围:-32768 ~ 32767
- int32 取值范围:-2,147,483,648 ~ 2,147,483,647
- int64 取值范围:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
  • uint
- uint8 取值范围:0 ~ 255
- uint16 取值范围:0 ~ 65,535
- uint32 取值范围:0 ~ 4,294,967,295
- uint64 取值范围:0 ~ 18,446,744,073,709,551,615
  • 用不同的进制来表示整数:
package main
import "fmt"
func main() {
        var Decimal int = 12	// 十进制
        var Binary int = 0b1100	// 二进制
        var Octal int = 0o14	// 八进制
        var Hexadecimal int = 0x0c	// 十六进制

        fmt.Printf("10进制数 %d 表示的是: %d \n", Decimal, Decimal)     //12
        fmt.Printf("2进制数 %b 表示的是: %d \n", Binary, Binary)           //12
        fmt.Printf("8进制数 %o 表示的是: %d \n", Octal, Octal)             //12
        fmt.Printf("16进制数 %X 表示的是: %d \n", Hexadecimal, Hexadecimal)    //12
}

补充整型的输出格式化:

fmt.Printf() 函数据的格式化功能:
- %b 表示为二进制
- %c 该值对应的unicode码值
- %d 表示为十进制
- %o 表示为八进制
- %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
- %x 表示为十六进制,使用a-f
- %X 表示为十六进制,使用A-F
- %U 表示为Unicode格式:U+1234,等价于"U+%04X"
- %E 用科学计数法表示
- %f 用浮点数表示

浮点型

Go语言支持两种浮点型数:float32 和 float64
这两种浮点型数据格式遵循 IEEE 754标准 :

- float32:最大值约 3.4e38,常量定义:math.MaxFloat32
- float64:最大值约 1.8e308,常量定义:math.MaxFloat64
  • 浮点型的零值为 0.0 ,在进行除法运算的时候,浮点型的零值可以为分母并且不会报错,而整形的就会报错。
  • float32 精确到小数点后 7 位,float64 精确到小数点后 15 位。由于精确度的缘故,你在使用 == 或者 != 来比较浮点数时应当非常小心。最好在正式使用前测试对于精确度要求较高的运算。也可以使用 第三方包 来完成这个操作
  • 浮点数的保留位:
package main
import "fmt"
func main() {
    var f float64 = 3.1415926
    fmt.Printf("保留两位小数:%.2f",f)    //3.14
    fmt.Printf("保留两位小数:%.3f",f)    //3.142
}
  • 在日常使用中,我们经常通常都使用 float64 来来定义浮点类型,因为 math 包里面,几乎所有的方法,都支持 float64
  • 把float64 转换为 int 类型:
func IntFromFloat64(x float64) int {
    if math.MinInt32 <= x && x <= math.MaxInt32 { 
        whole, fraction := math.Modf(x)
        if fraction >= 0.5 {
            whole++
        }
        return int(whole)
    }
    panic(fmt.Sprintf("%g is out of the int32 range", x))
}

byte 和 rune 类型

组成每个字符串的元素叫做字符,通过遍厉字符串或者定义单个字符可以获取,定义字符时用 ’ 包裹起来。

    var testRune := '国'
    var testByte := 'a'
    fmt.Printf("字符的类型为:%T",testRune)    //rune
    fmt.Printf("字符的类型为:%T",testRune)    //byte
  • 使用中文或者一些特殊字符和Unicode编码的时候,一般都推荐定义为 rune 类型
rune 类型为 int32 的别名
byte 类型为 uint8 的别名范围为 (0~255)

字符串

  • Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)一样
  • Go 语言里的字符串的内部实现使用 UTF-8 编码。 字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII码字符,例如:
    var str string = "hello,世界!"
  • 字符串其实多个是 byte 类型和 rune 类型放在一起的类型,也就是 string 类型
    比如上面输出的字符串hello ,在 ascii 编码表中,每个字母对应的编号是:104,101,108,108,111。
    如果这样的话,我们就可以输出一组 []byte 数组,来看一下 string 的底层是什么结构。
    import "fmt"

    func main() {
        var mystr01 string = "hello"
        var mystr02 [5]byte = [5]byte{104, 101, 108, 108, 111}
        fmt.Printf("mystr01: %s\n", mystr01)
        fmt.Printf("mystr02: %s", mystr02)
    }

输出的结果为

    mystr01: hello
    mystr02: hello
  • 上面这个例子就说明了 string 类型的底层就是由一组 byte 类型的数组组成的。
  • 在Go 语言中,字符串之间可以直接通过 + 连接起来,例如:
    import "fmt"
    func main() {        
        s := "hel" + "lo," 
        s += "world!" 
        fmt.Println(s) 
        //输出 “hello, world!”
    }
  • 在遇到字符串数组时,也可以使用 Go 语言封装好的方法 strings.Join() 或者使用字符缓冲 bytes.Buffer() 拼接都可以,并且效率也更高。
  • 转义字符
- \n:换行符
- \r:回车符
- \t:tab 键
- \u 或
- \U:Unicode 字符
- \:反斜杠自身
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
GoLang学习笔记主要包括以下几个方面: 1. 语法规则:Go语言要求按照语法规则编写代码,例如变量声明、函数定义、控制结构等。如果程序中违反了语法规则,编译器会报错。 2. 注释:Go语言中的注释有两种形式,分别是行注释和块注释。行注释使用`//`开头,块注释使用`/*`开头,`*/`结尾。注释可以提高代码的可读性。 3. 规范代码的使用:包括正确的缩进和空白、注释风格、运算符两边加空格等。同时,Go语言的代码风格推荐使用行注释进行注释整个方法和语句。 4. 常用数据结构:如数组、切片、字符串、映射(map)等。可以使用for range遍历这些数据结构。 5. 循环结构:Go语言支持常见的循环结构,如for循环、while循环等。 6. 函数:Go语言中的函数使用`func`关键字定义,可以有参数和返回值。函数可以提高代码的重用性。 7. 指针:Go语言中的指针是一种特殊的变量,它存储的是另一个变量的内存地址。指针可以实现动态内存分配和引用类型。 8. 并发编程:Go语言提供了goroutine和channel两个并发编程的基本单位,可以方便地实现多线程和高并发程序。 9. 标准库:Go语言提供了丰富的标准库,涵盖了网络编程、文件操作、加密解密等多个领域,可以帮助开发者快速实现各种功能。 10. 错误处理:Go语言中的错误处理使用`defer`和`panic`两个关键字实现,可以有效地处理程序运行过程中出现的错误。 通过以上内容的学习,可以掌握Go语言的基本语法和编程思想,为进一步学习和应用Go语言打下坚实的基础。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Golang学习笔记](https://blog.csdn.net/weixin_52310067/article/details/129467041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [golang学习笔记](https://blog.csdn.net/qq_44336275/article/details/111143767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gopp-viper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值