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

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们&#xff0c;大家好。这里是C入门的第十一讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;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环境

引言&#xff1a; 背景是我现在要跑的实验在一台服务器上跑有点来不及了&#xff0c;需要将conda环境和文件一起迁移到另一台服务器上。文件的迁移可以用scp或者rsync。但是conda虚拟环境的迁移则不行。 步骤&#xff1a; step 1 将当前的虚拟幻境信息写入environment.yml c…...

websocket服务部署在内网,app无法访问

描述&#xff1a;websocket服务部署在内网&#xff08;ws://&#xff09;&#xff0c;app无法访问外网&#xff0c;需要将内网地址映射到外网 解法&#xff1a;通过nginx配置ws代理&#xff0c;部署nginx的服务器连通的外网和内网&#xff0c;通过nginx配置将原有的ws请求转换…...

vs2010对于c++11的支持

不支持 using代替typedef变参模板for each...

OpenCV cv::Mat和QImage互相转换

在使用OpenCV和Qt进行图像处理时&#xff0c;经常需要将cv::Mat和QImage之间进行转换。下面是cv::Mat和QImage之间的相互转换方法&#xff1a; 将cv::Mat转换为QImage&#xff1a; cv::Mat cvImage; // 你的cv::Mat图像// 将cv::Mat转换为QImage QImage qtImage(cvImage.data…...

pgsql 主从搭建

在 PostgreSQL 中&#xff0c;主从复制&#xff08;Master-Slave Replication&#xff09;是一种常见的数据库高可用性和数据备份解决方案。它允许你创建一个主数据库服务器&#xff08;Master&#xff09;&#xff0c;并在一个或多个从数据库服务器&#xff08;Slave&#xff…...

JS中的数值精度问题(二)

一、精度范围&#xff0c;精度最多只能到53个二进制位 JavaScript 能够准确表示的整数范围在-2^53到2^53之间&#xff08;不含两个端点&#xff09;&#xff0c;超过这个范围&#xff0c;无法精确表示这个值。 国际标准IEEE 754规定&#xff0c;有效数字第一位默认总是…...

WPF——Control与Template理解

文章目录 一、前言二、控件三、模板3.1 DataTemplate3.2 ControlTemplate3.3 ContentPresenter 四、结语 一、前言 最近又翻看了下刘铁猛的《深入浅出WPF》&#xff0c;发现对模板章节中的部分内容有了更深的体会&#xff0c;所以写篇文扯扯。 文章标题是Control与Template&a…...

华为HCIA学习(一)

文章目录 一.根据考试题总结知识点&#xff08;一题一点&#xff09;二.上午学习三.下午学习四.今天只做了70题&#xff0c;需要的可以找我 一.根据考试题总结知识点&#xff08;一题一点&#xff09; 二.上午学习 ① VRP系统是VRP是华为公司从低端到高端的全系列路由器、交换…...

使用jmeter+ant+jenkins+git搭建自动化测试平台

最近正在学习自动化测试&#xff0c;于是随手搭建了一下jmeterantjenkinsgit平台。 接下来&#xff0c;我会按照jdk&#xff0c;jmeter&#xff0c;ant&#xff0c;jenkins,git这个顺序一步一步的搭建起来。 一、jdk。这个就不多说了。我用的是1.8版本的&#xff0c;配环境变…...

C# Winform中在DataGridView中添加Button按钮,操作Button按钮

.Net的DataGridView控件中&#xff0c;提供了一种列的类型&#xff0c;叫 DataGridViewButtonColumn &#xff0c;这种列类型是展示为一个 按钮&#xff0c;可以给button赋予相应的text&#xff0c;并且&#xff0c;此button可以用来做处理事件的判断依据。 DataGridViewButto…...

Docker 网络学习

docker的网络模式 当你开始大规模使用Docker时&#xff0c;你会发现需要了解很多关于网络的知识。Docker作为目前最火的轻量级容器技术&#xff0c;有很多令人称道的功能&#xff0c;如Docker的镜像管理。然而&#xff0c;Docker同样有着很多不完善的地方&#xff0c;网络方面…...

django创建web服务器

安装 pip install django 创建项目 django-admin startproject report django-admin startapp data //project下可创建多个app 执行使用 python manage.py migrate //orm代码到数据库 python manage.py runserver 0.0.0.0:80 权限管理 python manage.py createsuperuser 创建…...

极光笔记 | 推送服务数据中心选择:合规性与传输效率的双重考量

随着全球化进程的深入&#xff0c;跨境数据传输与存储问题已经变得愈发重要。推送服务的数据中心节点选择不仅关乎数据访问速度和用户体验&#xff0c;同时也直接牵扯到数据合规性和安全保障。EngageLab Push深知这一点&#xff0c;为了满足更多国际客户和全球用户触达需求&…...

Python灰帽编程——初识Python上

1. Python 简介 常用安全工具语言示例perljoomscan whatwebrubymetasploit-frameworkpythonsqlmap pocsuite3gogoby 1.1 Python 起源 1.1.1 语言的作者 贵铎范罗萨姆&#xff08;Guido van Rossum&#xff09;荷兰人于1989 年圣诞节始创了python。 大神就是大神&#xff0…...

OLED透明屏交互技术:开创未来科技的新篇章

OLED透明屏交互技术作为一项前沿的科技创新&#xff0c;正在以其高透明度、触摸和手势交互等特点&#xff0c;引领着未来科技的发展。 不仅在智能手机、可穿戴设备和汽车行业有着广泛应用&#xff0c;还在广告和展示领域展现出巨大的潜力。 那么&#xff0c;尼伽在这篇文章中将…...

揭秘Spring Boot内嵌Tomcat原理

tomcat 介绍 tomcat 是 web容器&#xff08;servlet 容器&#xff09;&#xff0c;不管请求是访问静态资源HTML、JSP还是java接口&#xff0c;对tomcat而言&#xff0c;都是通过servlet访问&#xff1a; 访问静态资源&#xff0c;tomcat 会交由一个叫做DefaultServlet的类来处…...

分类散点图 stripplot() 加辅助线axhline() 多图合一

分类散点图 stripplot 加辅助线axhline 多图合一 效果图代码 画图没有什么可说的&#xff0c;直接上图 效果图 代码 # 绘制图&#xff0c; 查看是否数值在阈值上 plt.figure(figsize(30, 18)) n 0 for header, value_list in info_dict.items():ref_value_list ref_info_dic…...

一文告诉你为什么时序场景下 TDengine 数据订阅比 Kafka 好

在 TDengine 3.0 中&#xff0c;我们对流式计算、数据订阅功能都进行了再升级&#xff0c;帮助用户极大简化了数据架构的复杂程度&#xff0c;降低整体运维成本。TDengine 提供的类似消息队列产品的数据订阅、消费接口&#xff0c;本质上是为了帮助应用实时获取写入 TDengine 的…...

reg与wire的用法,证明reg可以在右边,wire型在左边,来作组合逻辑处理。

reg与wire的用法&#xff0c;证明reg可以在右边&#xff0c;wire型在左边&#xff0c;来作组合逻辑处理。 1&#xff0c;RTL2&#xff0c;生成的原理图 1&#xff0c;RTL 参考文献&#xff1a; 1&#xff0c;verilog 中 wire 和reg 的使用 2&#xff0c;解决一个assign问题&…...

Studio One6.2简体中文免费最新版本宿主软件

对于一些有创作需求的朋友来说&#xff0c;为自己写的歌制作伴奏是很平常的。今天要和大家分享的就是自己写的歌怎么做伴奏&#xff0c;自己做伴奏的软件有哪些。Studio One是宿主软件界的一个后起之秀&#xff0c;推出的时间不久&#xff0c;但是受到了大量音乐制作人的推崇。…...

wordpress 微信二维码登录/手机一键优化

模板介绍 精美PPT模板设计&#xff0c;蓝色简洁个人岗位竞聘PPT模板。一套岗位晋升幻灯片模板&#xff0c;内含蓝色多种配色&#xff0c;精美风格设计&#xff0c;动态播放效果&#xff0c;精美实用。 一份设计精美的PPT模板&#xff0c;可以让你在汇报演讲时脱颖而出。 希望…...

网站开发项目经验/seo薪资水平

摘要&#xff1a;上传大于8M的文件需要修改php的配置才可以生效。但是我在网上找了一堆修改配置的资料&#xff0c;但是自己修改之后就是没有生效。解决方法&#xff1a;修改php.ini这个选项&#xff0c;网上有很多的教程&#xff0c;可以随便搜。1、先用root账号&#xff0c;登…...

凡科轻站官网/地推接单在哪个平台找

shell脚本执行报错exec format error&#xff0c;脚本权限没有问题&#xff1a; 原因可能是脚本里#&#xff01;/bin/bash和#!/bin/sh兼容问题导致&#xff0c;标准系统支持的都是/bin/bash&#xff1b; 首先查看当前系统的bash或dash&#xff1a; [rootlocalhost ~]# ls -l …...

wordpress 顶栏显示/百度注册页面

问题 问题1&#xff1a; 最近有不少用户反馈使用 php runtime的时候遇见如下报错Cannot modify header information - headers already sent by (output started at ... 问题2&#xff1a; 如果更改php 的session 目录&#xff1f;本文旨在梳理此类问题的原因&#xff0c;触发条…...

平阳县住房和城乡规划建设局网站/百度竞价推广怎么收费

复习一下基础DP&#xff0c;记忆化搜索 题意&#xff1a;给一个名字&#xff0c;和n*m矩阵&#xff0c;下面是矩阵信息&#xff0c;每次在一个格子&#xff0c;可以向上下左右移动&#xff0c;但是要求那个数字比当前所在格子数字小。可以从任意点出发&#xff0c;问最长的距离…...

做p2p网站的公司/seo建设招商

//这张表存放的是所有单据模板的信息表 如果不知道单据模板的信息后可在数据库中查询PUB_BILLTEMPLET//这张表是打印模板的表改模板可以再此表修改pub_print_template//获取表头某个字段的值getBillCardPanel().getHeadItem("kitarea").getValueObject()//获取当前登…...