当前位置: 首页 > news >正文

Go语言基础之基本数据类型

整型

整型分为以下两个大类:

按长度分为:int8、int16、int32、int64

对应的无符号整型:uint8、uint16、uint32、uint64

浮点型

Go语言支持两种浮点型数:float32float64

复数

complex64和complex128

布尔值

布尔型数据只有true(真)false(假)两个值

注意:

1、布尔类型变量的默认值为false

2、Go 语言中不允许将整型强制转换为布尔型.

3、布尔型无法参与数值运算,也无法与其他类型进行转换。

字符串

s1 := "hello" s2 := "你好"
// 字符串连接 combined := s1 + " " + s2 // 结果为 "hello 你好" // 获取字符串长度 length1 := len(s1) // 英文长度为 5 length2 := len(s2) // 中文长度为 2(UTF-8 编码下每个中文字符占 3 字节,但 len 返回字符数) // 字符串比较 isEqual := (s1 == s2) // 结果为 false

字符串拼接

使用加号(+)或字符串的join()方法可以将多个字符串连接起来。加号适用于少量字符串拼接,而join()方法在处理大量字符串时效率更高。

str1 = "Hello" str2 = "World" result = str1 + " " + str2 # 输出: "Hello World" words = ["Hello", "World"] result = " ".join(words) # 输出: "Hello World"

字符串分割

split()方法可以将字符串按指定分隔符拆分为列表。若不指定分隔符,默认按空白字符分割。

text = "Hello,World" parts = text.split(",") # 输出: ["Hello", "World"]

字符串替换

replace()方法用于替换字符串中的子串。可以指定替换次数。

text = "Hello World" new_text = text.replace("World", "Python") # 输出: "Hello Python"

大小写转换

upper()lower()方法分别将字符串转换为全大写或全小写。capitalize()将首字母大写,其余小写。

text = "Hello World" upper_text = text.upper() # 输出: "HELLO WORLD" lower_text = text.lower() # 输出: "hello world"

去除空白字符

strip()方法去除字符串两端的空白字符(包括空格、换行符等)。lstrip()rstrip()分别去除左侧或右侧的空白。

text = " Hello World " stripped = text.strip() # 输出: "Hello World"

字符串查找

find()方法返回子串首次出现的索引,未找到时返回-1index()方法类似,但未找到时会抛出异常。

text = "Hello World" position = text.find("World") # 输出: 6

字符串格式化

使用format()方法或 f-string(Python 3.6+)可以动态插入变量值。

name = "Alice" age = 25 # format() 方法 message = "My name is {} and I am {} years old".format(name, age) # f-string message = f"My name is {name} and I am {age} years old"

字符串长度

len()函数返回字符串的字符数。

text = "Hello" length = len(text) # 输出: 5

字符串切片

通过索引和切片操作可以获取子串。索引从0开始,支持负数索引(从末尾开始计数)。

text = "Hello World" substring = text[0:5] # 输出: "Hello" last_char = text[-1] # 输出: "d"

检查字符串内容

startswith()endswith()检查字符串是否以指定子串开头或结尾。

isalpha()isdigit()等方法检查字符串是否全为字母或数字。

text = "Hello" is_alpha = text.isalpha() # 输出: True starts_with_he = text.startswith("He") # 输出: True

byte和rune类型

  • byte用于单字节数据,rune用于 Unicode 字符。
  • 在处理字符串时,优先使用rune以避免多字节字符问题。
  • 类型转换时需注意数据范围
s := "Hello, 世界" for i := 0; i < len(s); i++ { fmt.Printf("%c ", s[i]) // 用 byte 遍历会乱码 } fmt.Println() for _, r := range s { fmt.Printf("%c ", r) // 用 rune 遍历正常 }

字符串修改

ASCII字符串修改(使用[]byte)

s1 := "big" byteS1 := []byte(s1) // 转换为字节切片 byteS1[0] = 'p' // 修改第一个字节 fmt.Println(string(byteS1)) // 输出: pig

Unicode字符串修改(使用[]rune)

s2 := "白萝卜" runeS2 := []rune(s2) // 转换为符文切片 runeS2[0] = '红' // 修改第一个符文 fmt.Println(string(runeS2)) // 输出: 红萝卜

关键区别

  • []byte按字节处理,适合ASCII字符(每个字符1字节)
  • []rune按Unicode码点处理,适合多字节字符(如中文,每个字符3字节)
  • 错误使用[]byte处理中文会导致乱码(因为会拆散多字节字符)

性能考虑

  • []byte转换更高效,但仅适用于单字节字符集
  • []rune转换会进行完整的Unicode解码,开销较大
  • 修改后都需要通过string()转换回字符串类型

类型转换

var a, b = 3, 4 var c int c = int(math.Sqrt(float64(a*a + b*b)))
  • a*a + b*b计算两直角边平方和(3² + 4² = 25)
  • float64()将整型结果转换为float64类型(math.Sqrt要求的参数类型)
  • math.Sqrt()计算平方根(√25 = 5.0)
  • int()将浮点结果转换回整型
fmt.Println(c) //打印计算结果5(整型)。
http://www.jsqmd.com/news/514753/

相关文章:

  • AARONIA SPECTRAN V6 PLUS 2000XA-6
  • SenseVoice-Small模型微信小程序开发实战:实现录音即时转文字功能
  • 从金庸到漫威:用LangChain+Embedding模型分析武侠与超级英雄语义相似度
  • 技术深度解析:Win11Debloat的架构设计与系统优化原理
  • 烟花爆竹仓库嵌入式环境监测终端设计
  • 【瑞利衰落信道】从Clarke到Jakes:模型对比与仿真实践
  • 从入门到精通:快速排序的核心原理、实现与优化
  • 电池管理(BMS)控制系统 电动客车电池管理系统SOC估算单元设计 设计一款电池管理系统,它包...
  • STM32 USB虚拟串口(VCP)原理与HAL库实战
  • 构建社区照护桥梁:.NET Core3.1+MVC社区呼叫系统设计与实现
  • Trelby 技术解析:从核心模块到个性化配置的完整指南
  • 在树莓派中安装kodi的时候碰到报错:Errors were encountered while processing: raspi-utils-otpE: Sub-process dpkg
  • 2026油田除砂器优质厂家推荐榜含联系渠道:石膏旋流器/石膏旋流子/石膏油田除泥器/石膏油田除砂器/HV100旋流器/选择指南 - 优质品牌商家
  • Cosmos-Reason1-7B模型Git版本管理实践:协作开发与模型迭代工作流
  • 使用Typora撰写FaceRecon-3D技术文档
  • 笔记本wifi 消失解决方案
  • Ostrakon-VL-8B赋能餐饮运维:基于视觉的硬件设备故障预判
  • 用Gemini Pro Vision玩转多模态:图片分析+OCR+视觉问答完整代码示例
  • 基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的轴承缺陷检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
  • 横评后发现!全场景通用降AI率平台,千笔·专业降AIGC智能体 VS speedai
  • CLIP ViT-H-14 GPU利用率提升技巧:FP16推理+TensorRT加速实践
  • unrpa终极指南:5个步骤高效提取RPA游戏资源文件
  • W25Q128 SPI Flash实战指南:从寄存器配置到常用指令全解析
  • 美胸-年美-造相Z-Turbo零基础教程:无需代码,用Gradio界面玩转AI绘画
  • Anaconda+D2L环境搭建保姆级教程:从虚拟环境创建到Jupyter配置
  • 2024浏览器扩展内容访问全攻略:从技术原理到合规使用指南
  • 3个核心价值:SheetJS商业落地合规指南
  • JSM1040T 1Mbps高速具有总线唤醒功能的CAN总线收发器
  • Hunyuan-MT-7B开源可部署:Apache+OpenRAIL-M双协议商用落地全解析
  • OpenClaw+GLM-4.7-Flash开发助手:自动生成测试用例与调试