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

举报
愚公搬代码 发表于 2022/07/31 00:03:16 2022/07/31
【摘要】 一、数据类型概要go语言中有四种数据类型:基础类型,复合类型,引用类型,接口类型。类型名称长度零值说明bool布尔类型1false其值不为真即为假,不可以用数字代表true或falsebyte字节型10uint8别名rune字符类型40专用于存储unicode编码,等价于uint32int, uint整型4或80有符号32位或无符号64位int8整型10-128~ 127,uint8整型1...

一、数据类型概要

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))
}

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。