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…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...

【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...