写点什么

【愚公系列】2022 年 7 月 Go 教学课程 011- 字符串类型

作者:愚公搬代码
  • 2022 年 7 月 14 日
  • 本文字数:1087 字

    阅读完需:约 4 分钟

一、数据类型概要

go 语言中有四种数据类型:基础类型,复合类型,引用类型,接口类型。


类型 |名称| 长度| 零值| 说明

-------- | -----| -----| -----| -----

bool |布尔类型| 1 |false |其值不为真即为假,不可以用数字代表 true 或 false

byte |字节型 |1 |0 |uint8 别名

rune |字符类型| 4 |0 |专用于存储 unicode 编码,等价于 uint32

int, uint |整型 |4 或 8| 0| 有符号 32 位或无符号 64 位

int8 |整型| 1 |0 |-128~ 127,

uint8 | 整型 |1 |0 |0~ 255

int16 |整型| 2 |0| -32768 ~ 32767,

uint16| 整型 |2 |0 |0 ~ 65535

int32 |整型| 4 |0| -2147483648 到 2147483647

uint32 |整型 |4 |0 |0 到 4294967295(42 亿)

int64| 整型 |8 |0 |-9223372036854775808 到 9223372036854775807

uint64 |整型| 8 |0 |0 到 18446744073709551615 ( 1844 京)

float32 |浮点型 |4 |0.0| 小数位精确到 7 位

float64 |浮点型| 8 |0.0 |小数位精确到 15 位

complex64 |复数类型| 8 ||

complex128 |复数类型 |16 || 64 位实数和虚数

uintptr |整型| 4 或 8 || 足以存储指针的 uint32 或 uint64 整数

strina | 字符串 || "” |utf-8 字符串

二、字符串类型

在 Go 语言中,字符串是一个不可改变的字节序列,类型为原生数据类型,同 int 、bool、float32、float64 是一样的,字符串的值通过双引号来包裹字符。


package main
import "fmt"
func main() { var name string = "愚公搬代码" str := "愚公搬代码" fmt.Printf("%s\n", name) fmt.Printf("%T", str)}
复制代码



主要:虽然看到 str 只包含一个字符,但是隐藏一个字符串结束标志‘%0’。

1.计算字符串的长度

Go 语言内置的 len()函数可以获取切片、字符串、通道(channel) 等的长度。


package main
import "fmt"
func main() { var name string = "愚公搬代码" str := "愚公搬代码" str1 := "abcde" fmt.Printf("%s\n", name) fmt.Printf("%T\n", str) fmt.Println(len(name)) fmt.Println(len(str1))}
复制代码



len()函数返回值为 int 类型,表示字符串的 ASCII 字符的个数或字节长度。


你可能会奇怪,字符串 str2 的长度居然是 15,这是因为 Go 语言的字符串都以 UTF-8 格式保存,每个中文占用 3 个字节,所以 5 ✖️ 3 = 15 个字节。


如果希望按照习惯上的字符个数类计算,可以使用 UTF-8 包提供的 RuneCountInString() 来统计 Uncode 字符数量:


package main
import ( "fmt" "unicode/utf8")
func main() { var name string = "愚公搬代码" str := "愚公搬代码" str1 := "abcde" fmt.Printf("%s\n", name) fmt.Printf("%T\n", str) fmt.Println(len(name)) fmt.Println(len(str1)) fmt.Println(utf8.RuneCountInString(name))}
复制代码



发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022.03.01 加入

该博客包括:.NET、Java、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、python、大数据等相关使用及进阶知识。查看博客过程中,如有任何问题,皆可随时沟通。

评论

发布
暂无评论
【愚公系列】2022年7月 Go教学课程 011-字符串类型_7月月更_愚公搬代码_InfoQ写作社区