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

# Go学习-Day7

文章目录

    • 断言
    • 文件
      • 打开/关闭文件
      • 读取文件
      • 写入文件
    • 命令行参数解析
      • Args
      • flag包
    • JSON

  • 个人博客:CSDN博客

断言

type Node struct {x inty int
}func main() {var a interface{}var n Node = Node{1, 2}a = nvar b Nodeb = a.(Node)fmt.Println(b)
}
  • 此处我们有一个结构体n给空接口a赋值(空接口没有方法,相当于方法被n给完全实现,所以是可以赋值给接口的),然后我们想把接口赋值给具体的结构体对象,但是,这里会报错,需要使用类型断言的语法。用.(类型)类声明a的类型。

  • 类型断言之后,编译器会判断这个变量是否是指向这个类型,如果是,就转换成这个类型来赋值

  • 就是把抽象的接口转换成具体的类型的方法

  • 如果类型不匹配的话,就会报panic,通过这个方法,可以判断接口个具体类型,执行特定操作

  • if a, flag := u.(xxx); flag == true {xxxx
    } 
    
  • x.(type)会返回类型

文件

打开/关闭文件

import ("fmt""os"
)func main() {f, err := os.Open("E:\\JetBrains\\GoLandSpace\\src\\go_code\\project01\\main\\test.txt")if err != nil {fmt.Println(err)}fmt.Printf("%v", f)err = f.Close()if err != nil {fmt.Println(err)}
}
//返回&{0xc00010c780}
  • 先用os包打开文件,再用方法关闭,上面的绝对路径当中,如果用正斜杠要双写,反斜杠就不用

读取文件

  • import ("bufio""fmt""io""os"
    )func main() {f, err := os.Open("E:/JetBrains/GoLandSpace/src/go_code/project01/main/test.txt")if err != nil {fmt.Println(err)}defer f.Close() //函数推出的时候自动关闭reader := bufio.NewReader(f) //创建一个缓冲区来读入for {str, err := reader.ReadString('\n') //读到换行符就停止if err == io.EOF {break //读到末尾}fmt.Println(str)}fmt.Println("-------------------")
    }
    
  • 首先打开文件,然后按行读取,注意读到EOF要结束死循环

  • ioutil.ReadFile可以一次性读入到一个字节数组内,不过文件需要比较小的情况下使用

写入文件

import ("bufio""fmt""os"
)func main() {filePath := "E:/JetBrains/GoLandSpace/src/go_code/project01/main/a.txt"file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)//后面那个int在windows下无用if err != nil {fmt.Printf("%v", err)return}defer file.Close()str := "ok\n"writer := bufio.NewWriter(file)writer.WriteString(str)writer.Flush() //从缓冲区压入文件}
  • 写入文件的流程也是非常亲切
  • 我们写入写入缓冲区之后,我们必须要flush刷新一下缓冲区,将缓冲区内的字符刷到磁盘上
  • 通过不同的标识符,有追加,截断清除的写入操作
  • 类似的可以拷贝文件,有io.Copy()函数可以更方便地拷贝文件

命令行参数解析

Args

  • os.Args这是go的命令行参数的数组,但是不方便

flag包

flag.StringVar(&xxx, "x", "", "sss")
//第一个变量是传入的值所存的变量的地址,"x"是传入的参数的名字,""是默认值, "sss"是说明
  • 设置完这些变量之后使用flag.parse()来解析命令行的参数

JSON

  • JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 key-val的形式
  • 中括号表示数组,大括号表示对象,一个个的键值对用,号分隔开
  • 序列化方法上面写过了,用json.Marshal()
  • 反序列化用json.Unmarshal([]byte(str), &xxx)

相关文章:

# Go学习-Day7

文章目录 断言文件打开/关闭文件读取文件写入文件 命令行参数解析Argsflag包 JSON 个人博客:CSDN博客 断言 type Node struct {x inty int }func main() {var a interface{}var n Node Node{1, 2}a nvar b Nodeb a.(Node)fmt.Println(b) }此处我们有一个结构体…...

uniapp-form表单

<template><view class"ptb-20 plr-30 bg min100"><view class"bg-white radius-20 pd-30"><view class"bold mt-30 mb-50 size-32">选择方式&#xff1a;</view><u--form labelPosition"left" :mod…...

漏洞挖掘-利用

一、文章简介 整合一些web漏洞&#xff0c;以及对漏洞的理解。 二、Web漏洞 1.SQL注入 &#xff08;1&#xff09;定义 开发者程序编写过程中&#xff0c;对传入用户数据过滤不严格&#xff0c;将可能存在的攻击载荷拼接到SQL查询语句当中&#xff0c;再将这些查询语句传递到…...

React钩子函数之useDeferredValue的基本使用

在React中&#xff0c;使用钩子函数可以方便地管理组件的状态和副作用。useDeferredValue是React 18中新引入的钩子函数之一&#xff0c;它可以帮助我们优化渲染性能&#xff0c;让组件更加流畅。 useDeferredValue的作用是将一个值延迟更新。这个值可以是状态、属性或其他变量…...

lodash常用方法

cloneDeep 克隆 import { cloneDeep&#xff0c;reduce } from lodash; const b {c:1} const a cloneDeep(b)debounce 防抖 import { debounce } from lodash; debounce(() > {}, 300, { trailing: true })()omit方法删除指定属性&#xff0c;返回一个新的对象 import …...

QByteArray与结构体之间相互转换

Qt项目会碰到自定义结构体和字符数组之间的转换问题&#xff0c;不妨假设结构体名字为custom_struct, 字符数组名字为array_data QByteArray转换为自定义结构体 custom_struct *struct_data reinterpret_cast<custom_struct *>(array_data.data());自定义结构体转换为…...

npm如何安装淘宝镜像

通过命令配置 这种方法是通过修改npm的全局配置文件&#xff0c;将默认的镜像源改为淘宝镜像。具体步骤如下&#xff1a; 打开终端&#xff0c;输入以下命令&#xff0c;设置淘宝镜像源&#xff1a;&#xff08;windowr&#xff09; npm config set registry https://registr…...

从项目中突显技能:在面试中讲述你的编程故事

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

python的观察者模式案例

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言二、具体代码写在结尾 前言 最近写安卓的代码比较多&#xff0c;了解了java代码的注册回调机制&#xff0c;也就是观察者模式&#xff0c;搜索了一下python也有…...

C语言——类型转换

数据有不同的类型&#xff0c;不同类型数据之间进行混合运算时涉及到类型的转换问题。 转换的方法有两种&#xff1a; 自动转换(隐式转换)&#xff1a;遵循一定的规则&#xff0c;由编译系统自动完成强制类型转换&#xff1a;把表达式的运算结果强制转换成所需的数据类型 语法格…...

jmeter性能测试入门完整版

1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言&#xff0c;JMeter小巧轻便且免费&#xff0c;逐渐成为了主流的性能测试工具&#xff0c;是每个测试人员都必须要掌握的工具之一。 本文为JMeter性能测试完整入门篇&…...

报错sql_mode=only_full_group_by

首发博客地址 https://blog.zysicyj.top/ 报错内容 ### The error may exist in file[D:\code\cppCode20221025\leader-system\target\classes\mapper\system\TJsonDataMapper.xml] ### The error may involve defaultParameterMap ### The error occurred while…...

伪造 IP 地址的原理和防范措施

在数字化时代&#xff0c;网络安全是至关重要的话题。其中&#xff0c;伪造 IP 地址是一种可能导致网络攻击和欺诈的技术手段。这里将深入探讨伪造 IP 地址的原理以及如何采取措施来防范这种风险。 一.伪造 IP 地址的原理 伪造 IP 地址是一种操纵网络通信的方式&#xff0c;它…...

Linux通过libudev获取挂载路径、监控U盘热拔插事件、U盘文件系统类型

文章目录 获取挂载路径监控U盘热拔插事件libusb 文件系统类型通过挂载点获取挂载路径添libudev加库 获取挂载路径 #include <stdio.h> #include <libudev.h> #include <string.h>int main() {struct udev *udev;struct udev_enumerate *enumerate;struct ud…...

【会议征稿】2023智能通信与网络国际学术会议(ICN 2023)

2023智能通信与网络国际学术会议&#xff08;ICN 2023&#xff09; 2023 International Conference on Intelligent Communication and Networking (ICN2023) 2023智能通信与网络国际学术会议&#xff08;ICN 2023&#xff09;将于2023年11月10-12日在中国常州召开。ICN 2023…...

Android投屏总结

#android手机投屏 ####导语 至于手机投屏的实现方法可谓五花八门&#xff0c;今天小袁就说下以开发人员的角度来说下当今手机的主流投屏方法。目前这种将终端信号经由WiFi传输到电视、电视盒的技术有三种&#xff1a;DLNA、AirPlay、Miracast、Google Cast。 ##手机投屏智能电…...

vue2 组件组成部分,组件通信,进阶语法

一、学习目标 1.组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09; ​ scoped解决样式冲突/data是一个函数 2.组件通信 组件通信语法父传子子传父非父子通信&#xff08;扩展&#xff09; 4.进阶语法 v-model原理v-model应用于组件sync修饰符ref和$refs$nextTic…...

信看课堂笔记—LDO和DC-DC电路打PK

LDO&#xff08;low dropout voltage regulator&#xff0c;低压差线性稳压器&#xff09;和DC-DC(Direct current-Direct current converter&#xff0c;直流电压转直流电压转换器)电源是非常常见的电源电路&#xff0c;LDO 出来的比较早&#xff0c;像老戏骨一样&#xff0c;…...

C++ Day6

目录 一、菱形继承 1.1 概念 1.2 格式 二、虚继承 2.1 作用 2.2 格式 2.3注意 三、多态 3.1函数重写 3.2 虚函数 3.3 赋值兼容规则 3.4 多态中&#xff0c;函数重写的原理 3.5 虚析构函数 3.5.1 格式 3.6 纯虚函数 3.6.1格式 四、抽象类 五、模板 5.1模板的特…...

分布式系统与微服务的区别是什么?

分布式系统和微服务是两个相关但不同的概念&#xff0c;它们都是在构建复杂的软件应用时使用的架构思想。 分布式系统&#xff1a; 分布式系统是指由多个独立的计算机或服务器通过网络连接共同工作&#xff0c;协同完成一个任务或提供一个服务。在分布式系统中&#xff0c;各个…...

基于开源项目chatgpt-cloned构建本地化AI对话应用:架构、部署与定制指南

1. 项目概述&#xff1a;一个“克隆”ChatGPT的本地化实践 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“chatgpt-cloned”。光看名字&#xff0c;很多人可能会以为这是一个试图完全复刻OpenAI ChatGPT庞大模型和服务的“巨无霸”工程。但点进去仔细研究后&#xff0…...

从零构建私有容器镜像仓库:基于Registry 2与MinIO的实战部署指南

1. 项目概述&#xff1a;从零到一构建一个现代化的容器镜像仓库 在云原生和微服务架构成为主流的今天&#xff0c;容器镜像作为应用交付的标准单元&#xff0c;其存储、分发和管理的重要性不言而喻。Docker Hub 是大家最熟悉的公共仓库&#xff0c;但在企业级生产环境中&#…...

虎牙转型:游戏内容生态初显成效,能否通过外部市场“成年礼”考验?

游戏直播幻梦破碎&#xff0c;虎牙走向游戏生意很多时候&#xff0c;一段老录屏能让人瞬间穿越回游戏直播最浮夸的年代。最先扑面而来的是满屏乱飞的礼物特效&#xff0c;如游艇、火箭、藏宝图&#xff0c;好似电子烟花秀&#xff0c;透着经济上行的美。那时的虎牙、斗鱼堪称互…...

开源阅读鸿蒙版:你的私人数字图书馆,从此不再为找书发愁

开源阅读鸿蒙版&#xff1a;你的私人数字图书馆&#xff0c;从此不再为找书发愁 【免费下载链接】legado-Harmony 开源阅读鸿蒙版仓库 项目地址: https://gitcode.com/gh_mirrors/le/legado-Harmony 你是否曾经为了找一本想看的书&#xff0c;在十几个阅读App之间来回切…...

KiloCode:命令行代码片段管理工具的设计与实战应用

1. 项目概述&#xff1a;一个面向开发者的轻量级代码片段管理工具如果你和我一样&#xff0c;每天在IDE、终端、浏览器和笔记软件之间反复横跳&#xff0c;只为找到上周写过的那个“完美”的Shell脚本片段&#xff0c;或者那个解决特定API调用的Python函数&#xff0c;那么你一…...

Win11 一键安装 OpenClaw 从下载到使用完整版

适配系统&#xff1a;Windows 11 专业版 / 家庭版 / 正式版&#xff08;全版本兼容&#xff09; 项目介绍&#xff1a;OpenClaw 是 GitHub 星标 28W 的开源本地 AI 智能体&#xff0c;可自动操控电脑、整理文件、浏览器自动化、办公自动化&#xff0c;被国内用户称为小龙虾&…...

JDspyder:3步实现京东抢购自动化的Python脚本解决方案

JDspyder&#xff1a;3步实现京东抢购自动化的Python脚本解决方案 【免费下载链接】JDspyder 京东预约&抢购脚本&#xff0c;可以自定义商品链接 项目地址: https://gitcode.com/gh_mirrors/jd/JDspyder 在电商促销和限量商品抢购的激烈竞争中&#xff0c;京东抢购自…...

终极指南:5分钟解锁小爱音箱完整音乐自由

终极指南&#xff1a;5分钟解锁小爱音箱完整音乐自由 【免费下载链接】xiaomusic 使用小爱音箱播放音乐&#xff0c;音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为小爱音箱的音乐限制感到困扰&#xff1f;想听什么歌都要…...

从零开始设计智能体的系统提示

写了137版系统提示之后&#xff0c;我总结出的这套“认知框架设计法”2019年我刚开始接触对话系统的时候&#xff0c;写系统提示&#xff08;System Prompt&#xff09;是一件特别简单的事。你打开OpenAI的Playground&#xff0c;在“System”那个框里写上一段话&#xff0c;比…...

基于GPT的学术论文智能阅读工具:ChatGPT-Paper-Reader实战指南

1. 项目概述与核心价值如果你和我一样&#xff0c;经常需要阅读大量的学术论文&#xff0c;尤其是那些动辄十几页、公式图表密布的PDF文件&#xff0c;那你一定体会过那种“望文生畏”的感觉。一篇论文的核心创新点、实验细节、数据对比&#xff0c;往往散落在各个章节&#xf…...