Go基础-文件、字符
文件创建
导入“os”包,创建文件,读写文件的函数都在改包。
指定创建的文件存放路径以及文件名。
执行Create( )函数,进行文件创建。
关闭文件。
package mainimport ("fmt""os"
)func main() {//创建文件,需要指定文件的存放路径以及文件名称//file 为文件指针file, err := os.Create("D:/test/a.txt")//判断是否出现异常if err != nil {fmt.Println(err)//文件错误,也要关闭文件//file.Close()return}defer file.Close() //延迟执行//对创建的文件进行相关的操作关闭//file.Close()
}
写入数据_writestring方法—写入string信息到文件
不会追加,会清空文件然后添加数据
package mainimport ("fmt""os"
)func main() {//创建文件,需要指定文件的存放路径以及文件名称//file 为文件指针file, err := os.Create("D:/test/a.txt")//判断是否出现异常if err != nil {fmt.Println(err)//文件错误,也要关闭文件//file.Close()return}defer file.Close() //延迟执行// 数据长度n, err := file.WriteString("cccc") //写入ccc然后再写成ddd,只会出现dddd并不会追加if err != nil {fmt.Println(err)return}fmt.Println(n) //n为数据的长度}
写入数据_write方法----写入byte类型的信息到文件
不会追加,会清空文件然后添加数据
package mainimport ("fmt""os"
)func main() {//创建文件,需要指定文件的存放路径以及文件名称//file 为文件指针file, err := os.Create("D:/test/c.txt")//判断是否出现异常if err != nil {fmt.Println(err)//文件错误,也要关闭文件//file.Close()return}defer file.Close() //延迟执行var str string = "Hello1 world"n, err := file.Write([]byte(str)) //需要将字符串转换为字节切片if err != nil {return}fmt.Println(n) //n为数据的长度
}
写入数据WriteAt方法–在指定位置开始写入byte类型的信息
第一个参数为在逛光标最后一个位置然后执行得到0
seek, err := file.Seek(0, io.SeekEnd) //把光标定位到文件中原有内容的后面,返回文件原油有数据的长度
package mainimport ("fmt""io""os"
)func main() {//创建文件,需要指定文件的存放路径以及文件名称//file 为文件指针file, err := os.Create("D:/test/a.txt")//判断是否出现异常if err != nil {fmt.Println(err)//文件错误,也要关闭文件//file.Close()return}defer file.Close() //延迟执行file.WriteString("hello world")var str string = "aaa"seek, err := file.Seek(0, io.SeekEnd) //把光标定位到文件中原有内容的后面if err != nil {return}//第一个参数 字节切片,第二个参数指定位置写入数据n, err := file.WriteAt([]byte(str), seek) //单独写入,也不会追加if err != nil {fmt.Println(err)return}fmt.Println(n) //n为数据的长度
}
向已经存在文件中写入数据----OpenFile( )使用
OpenFile( )这个函数有三个参数:
第一个参数表示:打开文件的路径
第二个参数表示:模式,常见的模式有
O_RDONLY(只读模式),O_WRONLY(只写模式), O_RDWR( 可读可写模式),O_APPEND(追加模式)。
第三个参数表示: 权限,取值范围(0-7)
表示如下:
0:没有任何权限
1:执行权限(如果是可执行文件,是可以运行的)
2:写权限
3: 写权限与执行权限
4:读权限
5: 读权限与执行权限
6: 读权限与写权限
7: 读权限,写权限,执行权限
package mainimport ("fmt""os"
)func main() {//创建文件,需要指定文件的存放路径以及文件名称//file 为文件指针//file, err := os.OpenFile("D:/test/a.txt", os.O_APPEND, 6)//追加file, err := os.OpenFile("D:/test/a.txt", os.O_RDWR, 6) //可读可写,从文件最开始的位置开始写入的if err != nil {fmt.Println(err)return}defer file.Close()//通过文件指针向文件中写入数据或者读写数据writeString, err := file.WriteString("ziyeye")if err != nil {fmt.Println(err)return}fmt.Println(writeString)
}
读取文件数据
读取文件的基本流程如下:
打开要读取的文件
对文件进行读取
关闭文件
package mainimport ("fmt""io""os"
)func main() {//打开要读取的文件file, err := os.Open("D:/test/a.txt") //只读方式if err != nil {fmt.Println(err)return}defer file.Close()//进行文件内容读取//定义一个字符类型切片,存储从文件中读取的数据buffer := make([]byte, 1024*2)n, err := file.Read(buffer)if err != nil {if err == io.EOF {fmt.Println(err)}return}//关闭文件fmt.Println(n)fmt.Println(string(buffer[:n]))
}
循环读取文件内容
package mainimport ("fmt""io""os"
)func main() {//打开要读取的文件file, err := os.Open("D:/test/a.txt") //只读方式if err != nil {fmt.Println(err)return}defer file.Close()//进行文件内容读取//定义一个字符类型切片,存储从文件中读取的数据buffer := make([]byte, 10)for true {n, err := file.Read(buffer)if err != nil {if err == io.EOF { //表示到达文件末尾了fmt.Println(err)break}}fmt.Println(n)fmt.Println(string(buffer[:n]))}//关闭文件}
案例
文件拷贝,将已有的文件复制一份,同时重新命名。
package mainimport ("fmt""io""os"
)func main() {//打开原有文件file, err := os.Open("D:/test/a.txt")if err != nil {fmt.Println(err)}defer file.Close()//创建一个新的文件file2, err := os.Create("D:/test/zi.txt")if err != nil {fmt.Println(err)}defer file2.Close()//将原有文件中的内容读取出来,然后写入到新的文件中buffer := make([]byte, 10)for true {n, err := file.Read(buffer)if err != nil {if err == io.EOF {fmt.Println(err)break}fmt.Println(err)}file2.Write(buffer[:n])}//关闭文件}
字符串常用方法
Contains(s,substr string) bool
功能:字符串s中是否包含substr返回bool值
Join(a[]string,sep string) string
功能:字符串连接,把切片 a通过sep连接起来
Index(s,sep string) int
功能:在字符串s中查找sep所在的位置,返回位置值,找不到返回-1
Repeat(s string,count int) string
功能:重复s字符串count次,最后返回重复的字符串
Replace(s,old,new string,n int) string
功能:在s字符串吧old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
Split(s,sep string)[]string
功能:把s字符串按照sep分隔,返回slice(切片)
Trim(s string,cutset string) string
功能:在s字符串的头部和尾部取出cutset指定的字符串
Fields(s string) [] string
功能:去除s字符串的空格符,并且按照空格分隔返回切片
文档地址:https://studygolang.com/pkgdoc
package mainimport ("fmt""strings"
)func main() {var str string = "hellogo"contains := strings.Contains(str, "go") //是否包含go 判断某个字符串是否在str中存在,如果存在返回true否则返回falsefmt.Println(contains) //truecontains = strings.Contains(str, "goo") //是否包含gofmt.Println(contains) //falsestr1 := []string{"abc", "hello", "world"}join := strings.Join(str1, "|")fmt.Println(join) //abc|hello|world//Index 查找某个位置var str2 string = "abcHello"index := strings.Index(str2, "Hello") //判断Hello在str中出现的位置,注意位置从0开始计算fmt.Println(index)repeat := strings.Repeat("go", 3) //表示字符串go重复三次fmt.Println(repeat) //gogogo//Replacestr3 := "hello world"replace := strings.Replace(str3, "l", "ye", 1) //负数如-1为全部替换 用新的字符串替换旧的字符串,第四个参数表示替换的次数fmt.Println(replace) //heyelo world//Splitstr4 := "ziye@woaini@aini"split := strings.Split(str4, "@")fmt.Println(split) //[ziye woaini aini]
}
案例
让用户输入一个日期格式,如:2018-01-02, 输出日期为2008年1月2日
package mainimport ("fmt""strings"
)func main() {//输入日期fmt.Println("请输入日期,格式:年-月-日")var str stringfmt.Scan(&str)//按照-进行分隔split := strings.Split(str, "-")//输出指定的格式fmt.Println(split[0] + "年" + split[1] + "月" + split[2] + "日")
}
让用户输入一句话,判断这句话中有没有“邪恶”,如果有“邪恶”就替换成“**”,然后输出。 如:老王很邪恶,输出后变成老王很xxx
package mainimport ("fmt""strings"
)func main() {//定义变量存储用户输入的一句话fmt.Println("请输入一句话")var str stringfmt.Scan(&str)//判断用户输入的内容中是否有邪恶if strings.Contains(str, "邪恶") {str = strings.Replace(str, "邪恶", "**", -1)}//如果有,则进行替换fmt.Println(str)
}
字符串转换
把其他类型的转换为字符串。
把字符串转换为其他类型
https://blog.csdn.net/qq_40432598/article/details/132702749?spm=1001.2014.3001.5502
相关文章:
Go基础-文件、字符
文件创建 导入“os”包,创建文件,读写文件的函数都在改包。 指定创建的文件存放路径以及文件名。 执行Create( )函数,进行文件创建。 关闭文件。 package mainimport ("fmt""os" )func main() {//创建文件,…...
启动YOLO进行图片物体识别
查看官方文档YOLO: Real-Time Object Detection 这些是一些模型的对比,显示了YOLO的优势,继续往下面看 CoCoData set 是一个数据库,用来训练模型,这里面有丰富的物体检测,分割数据集,图像经过了精确的segm…...
BMS电池管理系统的蓝牙芯片 国产高性能 低功耗蓝牙Soc芯片PHY6222
电池管理系统是对电池进行监控与控制的系统,将采集的电池信息实时反馈给用户,同时根据采集的信息调节参数,充分发挥电池的性能。但是,前技术中,在管理多个电池时,需要人员现场调试与设置,导致其…...
肖sir__mysql之三表__008
mysql之三表 create table student( stu_no int, stu_name varchar(10), sex char(1), age int(3), edit varchar(20) ) DEFAULT charsetutf8; insert into student values (1,‘wang’,‘男’,21,‘hello’), (2,‘小明’,‘女’,22,‘haha2’), (3,‘hu’,‘女’,23,‘haha3…...
【Linux】常用工具(上)
Linux 常用工具 一、Linux 软件包管理器 yum1. 软件包2. 查看软件包3. 安装/卸载软件4. yum 其他指令的功能 二、Linux 编辑器 - vim 使用1. vim 的基本概念2. vim 的基本操作(1)光标移动(命令模式)(2)光标…...
【kafka】可视化工具KAFKA EAGLE安装分享
目录 准备: 开始: 1.解压 2.环境变量配置 3.生效环境变量配置文件 3.修改配置文件 1.修改zookeeper集群信息 2.修改mysql配置信息 4.启动 5.异常排查 6.页面 创作不易,你的动力是我创作的动力,如果有帮助请关注我&…...
【深度装机】深度U盘装机后黑屏闪光标
装x64的系统 装机版的gho文件太多预装软件了。几年前买的这种无风扇的机器,之前装的ubuntu:装机U盘启动后,先删掉的所有的ubuntu分区。使用了10几年的AOC又肩负使命: 感觉发热还是挺大的。 有人说因为secure boot 打开secure boo…...
【性能测试】JMeter:集合点,同步定时器的应用实例!
一、集合点的定义 在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。 通过插入集合点可以较真实模拟多个用户并发操作。 (注意:虽然通过加入集合点可…...
21天学会C++:Day11----运算符重载
CSDN的uu们,大家好。这里是C入门的第十一讲。 座右铭:前路坎坷,披荆斩棘,扶摇直上。 博客主页: 姬如祎 收录专栏:C专题 目录 1. 知识引入 2. 运算符重载 2.1 operator<() 2.2 operator() 2.3 o…...
面经pc端项目
创建项目 安装脚手架-----创建项目------选择自定义 sass基础语法 https://www.sass.hk/ sass语法有两个:sass(旧) scss(新) 1.scss语法 和less语法类似,支持嵌套,支持变量… scss: $变量名 less: @变量名 $color:orange; .box{width: 400px;height: 400px;borde…...
三步在两台服务器间迁移conda环境
引言: 背景是我现在要跑的实验在一台服务器上跑有点来不及了,需要将conda环境和文件一起迁移到另一台服务器上。文件的迁移可以用scp或者rsync。但是conda虚拟环境的迁移则不行。 步骤: step 1 将当前的虚拟幻境信息写入environment.yml c…...
websocket服务部署在内网,app无法访问
描述:websocket服务部署在内网(ws://),app无法访问外网,需要将内网地址映射到外网 解法:通过nginx配置ws代理,部署nginx的服务器连通的外网和内网,通过nginx配置将原有的ws请求转换…...
vs2010对于c++11的支持
不支持 using代替typedef变参模板for each...
OpenCV cv::Mat和QImage互相转换
在使用OpenCV和Qt进行图像处理时,经常需要将cv::Mat和QImage之间进行转换。下面是cv::Mat和QImage之间的相互转换方法: 将cv::Mat转换为QImage: cv::Mat cvImage; // 你的cv::Mat图像// 将cv::Mat转换为QImage QImage qtImage(cvImage.data…...
pgsql 主从搭建
在 PostgreSQL 中,主从复制(Master-Slave Replication)是一种常见的数据库高可用性和数据备份解决方案。它允许你创建一个主数据库服务器(Master),并在一个或多个从数据库服务器(Slaveÿ…...
JS中的数值精度问题(二)
一、精度范围,精度最多只能到53个二进制位 JavaScript 能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值。 国际标准IEEE 754规定,有效数字第一位默认总是…...
WPF——Control与Template理解
文章目录 一、前言二、控件三、模板3.1 DataTemplate3.2 ControlTemplate3.3 ContentPresenter 四、结语 一、前言 最近又翻看了下刘铁猛的《深入浅出WPF》,发现对模板章节中的部分内容有了更深的体会,所以写篇文扯扯。 文章标题是Control与Template&a…...
华为HCIA学习(一)
文章目录 一.根据考试题总结知识点(一题一点)二.上午学习三.下午学习四.今天只做了70题,需要的可以找我 一.根据考试题总结知识点(一题一点) 二.上午学习 ① VRP系统是VRP是华为公司从低端到高端的全系列路由器、交换…...
使用jmeter+ant+jenkins+git搭建自动化测试平台
最近正在学习自动化测试,于是随手搭建了一下jmeterantjenkinsgit平台。 接下来,我会按照jdk,jmeter,ant,jenkins,git这个顺序一步一步的搭建起来。 一、jdk。这个就不多说了。我用的是1.8版本的,配环境变…...
C# Winform中在DataGridView中添加Button按钮,操作Button按钮
.Net的DataGridView控件中,提供了一种列的类型,叫 DataGridViewButtonColumn ,这种列类型是展示为一个 按钮,可以给button赋予相应的text,并且,此button可以用来做处理事件的判断依据。 DataGridViewButto…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
