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…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...