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
目录
相关文章
|
5天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
23 2
|
9天前
|
JavaScript Java Go
探索Go语言在微服务架构中的优势
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出。本文将深入探讨Go语言在构建微服务时的性能优势,包括其在内存管理、网络编程、并发模型以及工具链支持方面的特点。通过对比其他流行语言,我们将揭示Go语言如何成为微服务架构中的一股清流。
|
3天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
11 2
|
3天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
14 2
|
8天前
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
30 7
|
8天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
38 5
|
8天前
|
安全 Go
用 Zap 轻松搞定 Go 语言中的结构化日志
在现代应用程序开发中,日志记录至关重要。Go 语言中有许多日志库,而 Zap 因其高性能和灵活性脱颖而出。本文详细介绍如何在 Go 项目中使用 Zap 进行结构化日志记录,并展示如何定制日志输出,满足生产环境需求。通过基础示例、SugaredLogger 的便捷使用以及自定义日志配置,帮助你在实际开发中高效管理日志。
25 1
|
7天前
|
程序员 Go
go语言中的控制结构
【11月更文挑战第3天】
84 58
|
6天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
7天前
|
存储 编译器 Go
go语言中的变量、常量、数据类型
【11月更文挑战第3天】
24 9