Golang 基本数据类型

本文介绍了Golang的几种基本数据类型,包括整型、浮点型、复数、布尔、字符、字符串及其操作,如类型转换、字符串长度获取、错误处理等。还讨论了变量声明、指针、自定义类型和常量。Golang是一种强类型语言,其字符串是不可变的,需要使用特定方法进行操作。
摘要由CSDN通过智能技术生成

前言

本文主要介绍 golang 的几种常用的基本数据类型,如整型,浮点型,字符,字符串,布尔型等,并介绍了一些常用的类型转换操作。

Golang 是一种强类型语言,变量使用时需要进行强制类型定义,一旦某一个变量被定义,如果不经强制转换,那么它永远就是该类型。

变量声明及初始化

Golang 推荐使用驼峰式命名,如 QuoteRuneToASCII 和 parseRequestLine 等。

定义变量的几种形式:

// 第一种,先声明类型,再进行初始化赋值
// 如果没有初始化,则变量默认为零值。
var a int
a = 3

// 第二种, 根据赋值自动适配类型
b := 3   // 这种写法只能在函数体中出现
         // 效果等价于 var b = 3, 但后者可以在函数体之外的地方使用

// 第三种,声明类型的同时进行赋值
var c int = 3

// 第四种,使用 new 创建变量,然后返回变量的地址,类型为 *type
p := new(int)
*p = 3

// 与 python 相同,交换两个变量的值,可以使用 a, b = b, a 
// 但与 python 不同的是两个变量的类型必须是相同的。

注意:

  • Golang 中不允许出现未使用的变量,否则会报错 a declared and not used。但是全局变量是允许声明但不使用。
  • Golang 的封装性由变量名第一个字母决定,大写字母开头的变量是可导出的变量,可以在包外使用,小写字母或者下划线开头的变量只能在本包内使用。
  • “:=” 是一个变量声明语句,而 “=‘ 是一个变量赋值操作,一行中简短声明多个变量时,":=" 语句中必须至少要声明一个新的变量。

基本数据类型

获取元素类型

// 方法一,创建 reflect 变量
import "reflect"

var a int
typeOfA := reflect.TypeOf(a)
fmt.Println(typeOfA)
// 或者直接 fmt.Println(reflect.TypeOf(a))

// 方法二,使用 fmt 查看
import "fmt"
var a int
fmt.Printf("%T", a)   // 注意不能用 Println

整型

数字表示类型的比特长度,不同长度的类型是独立的,混合计算会报错

int 的长度由硬件决定:

数据类型 计算机架构 比特宽度 字节宽度
int 32位 32 4
int 64位 64 8
uint 32位 32 4
uint 64位 64 8

也可以指定 int 的固定长度类型:

数据类型 比特宽度
int8 8
int16 16
int32 (rune, 可以用来表示一个 Unicode 字符) 32
int64 64
uint8 (byte) 8
uint16 16
uint32 32
uint64 64

浮点类型

Golang 支持两种浮点型数值:float32 和 float64。可以使用 math 包中的常量获取浮点类型的边界值

const (
    MaxFloat32             = 3.40282346638528859811704183484516925440e+38  // 2**127 * (2**24 - 1) / 2**23
    SmallestNonzeroFloat32 = 1.401298464324817070923729583289916131280e-45 // 1 / 2**(127 - 1 + 23)

    MaxFloat64             = 1.797693134862315708145274237317043567981e+308 // 2**1023 * (2**53 - 1) / 2**52
    SmallestNonzeroFloat64 = 4.940656458412465441765687928682213723651e-324 // 1 / 2**(1023 - 1 + 52)
)

注意:浮点类型有精度限制,计算结果不准确,不推荐使用
需要进行浮点计算时,可以使用放大 100 倍的整数计算,计算完成再将结果缩小 100 倍

复数

Golang 自带了复数类型,分别为 complex64, complex128,定义时需要制定实部和虚部,如:

var c1, c2 complex64
c1 = 1 + 2i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值