02-Go语言数据类型与变量

简介: Go基本类型布尔型: bool- 长度: 1字节- 取值范围: true,false- 注意事项: 不可以用数字代表true或false整型: int/uint- 根据运行平台可能为32或648位整型:int8/uint8- 长度: 1字节- 取值范围: -128~127/0-25...

Go基本类型

布尔型: bool

- 长度: 1字节
- 取值范围: true,false
- 注意事项: 不可以用数字代表true或false

整型: int/uint

- 根据运行平台可能为32或64

8位整型:int8/uint8

- 长度: 1字节
- 取值范围: -128~127/0-255

字节型: byte(uint8别名)

16位整型:int16/uint16

- 长度: 2字节
- 取值范围: -32768~32767/0~65535

32位整型:int32(rune)/uint32

- 长度: 4字节
- 取值范围: -2^32/2~2^32/2-1/0~2^64-1

浮点型: float32/float64

- 长度: 4/8字节
- 小数位: 精确到7/15小数位

复数: complex64/complex128

- 长度: 8/16字节

足够保存指针的32位或64位整数型: uintptr

其它值类型:

- array struct  string

接口类型: inteface

函数类型: func 在go语言中函数可以赋值给变量

类型零值

零值并不等于空值,而是当变量被声明为某种类型后的默认值,通常情况下值类型的默认值为0,bool为false, string为空字符串

类型别名

单个变量的声明与赋值

  • 变量的声明格式:var <变量名称> <变量类型>
  • 变量的赋值格式:<变量名称> = <表达式>
  • 声明的同时赋值: var <变量名称> [变量类型] = <表达式>
    img_9f2b265b2382d7ddf5dfa945dde1b928.png

多个变量的声明与赋值

  • 全局变量的声明可使用var()的方式进行简写
  • 全局变量的声明不可以省略var,但可使用并行方式
  • 所有变量都可以使用类型推断
  • 局部变量不可以使用var()的方式简写,只能使用并行方式
    img_b6818458d9e17228d8955192ee8fcbd9.png

img_7f1f065ebd5e7438ec72b69715ae3334.png

img_41bfd30cffa9580b4f9dd6503feb521e.png

变量的类型转换

  • Go中不存在隐式转换,所有类型转换必须显式声明
  • 转换只能发生在两种相互兼容的类型之间
  • 类型转换的格式:

     <ValueA> [:]= <TypeOfValueA>(<ValueB>)
// 例如
import (
    "fmt"
)

type (
    byte int8
    rune int32
    ByteSize int64
)

var ()

func main() {
    var a float32 = 100.1
    fmt.Println(a)
    b := int(a)
    fmt.Println(b)
}
---
100.1
100

img_ae8ab120a65875045fe468d5fd99a776.png

练习题

执行这段代码,为什么么返回的是一个大写的A

func main() {
    var a int = 65
    b := string(a)
    fmt.Println(b)
}
---
A
string()表示将数据转换成文本格式,因为计算机中存储的任何东西本质上都是数字,因此此函数自然地认为我们需要的是用数字65表示的文本A。

解决方法

package main

import (
    "fmt"
     "strconv"        // 需要导入这个包
)

func main() {
    var a int = 65
    b := strconv.Itoa(a)        // 调用strconv.ltoa的方法
        a, _ = strconv.Atoi(b)
    fmt.Println(a)
}
---
65
目录
相关文章
|
17天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
38 2
|
15天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
26 2
|
15天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
30 2
|
1天前
|
存储 Go 索引
go语言使用for循环遍历
go语言使用for循环遍历
15 7
|
4天前
|
存储 Go
go语言 遍历映射(map)
go语言 遍历映射(map)
18 2
|
5天前
|
Go 调度 开发者
Go语言中的并发编程:深入理解goroutines和channels####
本文旨在探讨Go语言中并发编程的核心概念——goroutines和channels。通过分析它们的工作原理、使用场景以及最佳实践,帮助开发者更好地理解和运用这两种强大的工具来构建高效、可扩展的应用程序。文章还将涵盖一些常见的陷阱和解决方案,以确保在实际应用中能够避免潜在的问题。 ####
|
5天前
|
测试技术 Go 索引
go语言使用 range 关键字遍历
go语言使用 range 关键字遍历
14 3
|
5天前
|
测试技术 Go 索引
go语言通过 for 循环遍历
go语言通过 for 循环遍历
16 3
|
7天前
|
安全 Go 数据处理
Go语言中的并发编程:掌握goroutine和channel的艺术####
本文深入探讨了Go语言在并发编程领域的核心概念——goroutine与channel。不同于传统的单线程执行模式,Go通过轻量级的goroutine实现了高效的并发处理,而channel作为goroutines之间通信的桥梁,确保了数据传递的安全性与高效性。文章首先简述了goroutine的基本特性及其创建方法,随后详细解析了channel的类型、操作以及它们如何协同工作以构建健壮的并发应用。此外,还介绍了select语句在多路复用中的应用,以及如何利用WaitGroup等待一组goroutine完成。最后,通过一个实际案例展示了如何在Go中设计并实现一个简单的并发程序,旨在帮助读者理解并掌
|
6天前
|
Go 索引
go语言按字符(Rune)遍历
go语言按字符(Rune)遍历
21 3