Go语言开发小技巧易错点100例(十三)

往期回顾:

  • Go语言开发小技巧&易错点100例(一)
  • Go语言开发小技巧&易错点100例(二)
  • Go语言开发小技巧&易错点100例(三)
  • Go语言开发小技巧&易错点100例(四)
  • Go语言开发小技巧&易错点100例(五)
  • Go语言开发小技巧&易错点100例(六)
  • Go语言开发小技巧&易错点100例(七)
  • Go语言开发小技巧&易错点100例(八)
  • Go语言开发小技巧&易错点100例(九)
  • Go语言开发小技巧&易错点100例(十)
  • Go语言开发小技巧&易错点100例(十一)
  • Go语言开发小技巧&易错点100例(十二)

本期看点(技巧类用【技】表示,易错点用【易】表示)

  • Go HTTP文件上传下载【技】
  • Go程序弹出浏览器【技】

正文开始:

Go HTTP文件上传下载

这段代码是一个简单的Go语言HTTP服务器,主要实现了文件上传和文件下载的功能。

  • uploadPath:定义了上传文件的存储路径。
  • maxUploadSize:定义了允许上传的最大文件大小为10MB。
package mainimport ("fmt""io""math/rand""net""net/http""os""path""path/filepath"
)const (uploadPath    = "tmp"maxUploadSize = 10 << 20 //10MB
)func main() {listen, _ := net.Listen("tcp", ":8888")//文件上传http.HandleFunc("/upload", func(w http.ResponseWriter, r *http.Request) {if err := r.ParseMultipartForm(maxUploadSize); err != nil {fmt.Printf("ParseMultipartForm err = %s", err)return}file, fileHeader, err := r.FormFile("file")if err != nil {fmt.Printf("FormFile err = %s", err)return}defer func() {_ = file.Close()}()if fileHeader.Size > maxUploadSize {fmt.Printf("max err = %s", err)return}fileBytes, err := io.ReadAll(file)if err != nil {fmt.Printf("read err = %s", err)return}newFileName := randToken(12) + path.Ext(fileHeader.Filename) //新文件名+后缀newFile, err := os.Create(filepath.Join(uploadPath, newFileName))if err != nil {fmt.Printf("Create err = %s", err)return}defer func() {_ = newFile.Close()}()if _, err := newFile.Write(fileBytes); err != nil || newFile.Close() != nil {fmt.Printf("Write err = %s", err)return}_, _ = w.Write([]byte("ok"))})//文件下载  http://localhost:8888/static/9a621d729566c74d10037c4d.jpghttp.Handle("/static/", http.FileServer(http.Dir(uploadPath)))_ = http.Serve(listen, nil)
}func randToken(len int) string {b := make([]byte, len)rand.Read(b)return fmt.Sprintf("%x", b)
}
Go程序弹出浏览器

这段Go语言代码主要包含了两个函数:mainOpenmain函数是程序的入口点,它调用了Open函数,并传入了一个URL字符串作为参数。Open函数则用于执行一个外部命令,尝试在Windows系统的命令提示符(cmd)中打开指定的URL。此外,还定义了一个名为execCommand的函数,它用于执行任意命令,并读取命令的标准输出。

package mainimport ("bufio""fmt""io""os/exec""time"
)func main() {_ = Open("http://localhost:8889")
}func Open(uri string) error {cmd := exec.Command("cmd", "/C", "start "+uri)return cmd.Run()
}// 执行cmd命令
func execCommand(commandName string, params []string) bool {cmd := exec.Command(commandName, params...)stdout, err := cmd.StdoutPipe()if err != nil {return false}if err := cmd.Start(); err != nil {panic(err)}reader := bufio.NewReader(stdout)for {out, err2 := reader.ReadBytes('\n')if err2 != nil || io.EOF == err2 {break}fmt.Println(string(out))}if err := cmd.Wait(); err != nil {panic(err)}return true
}

结束~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务流量控制组件Sentinel

启动Sentinel控制台 从github下载jar包执行java -Dserver.port9005 -jar sentinel-dashboard-1.8.7.jar 启动控制台登录控制台,账号密码默认 sentinel sentinel.dashboard.auth.username -----指定用户名启动sentinel.dashboard.auth.password -----指定密码启动 微服务引入依赖…

Uncertainty-Aware Mean Teacher(UA-MT)

Uncertainty-Aware Mean Teacher 0 FQA:1 UA-MT1.1 Introduction:1.2 semi-supervised segmentation1.3 Uncertainty-Aware Mean Teacher Framework 参考&#xff1a; 0 FQA: Q1: 不确定感知是什么意思&#xff1f;不确定信息是啥&#xff1f;Q2&#xff1a;这篇文章的精妙的点…

Java面试——锁

​ 公平锁&#xff1a; 是指多个线程按照申请锁的顺序来获取锁&#xff0c;有点先来后到的意思。在并发环境中&#xff0c;每个线程在获取锁时会先查看此锁维护的队列&#xff0c;如果为空&#xff0c;或者当前线程是等待队列的第一个&#xff0c;就占有锁&#xff0c;否则就会…

停止一个正在运行的线程的正确姿势

1、使用退出标志&#xff0c;使线程正常退出&#xff0c;也就是当run方法完成后线程终止。 2、使用stop方法强行终止&#xff0c;但是不推荐这个方法&#xff0c;因为stop和suspend及resume一样都是过期作 废的方法。 3、使用interrupt方法中断线程。 class MyThread extend…

线性代数的几何意义简单总结

矩阵的意义 矩阵既可以理解为一组&#xff08;列&#xff09;基向量&#xff0c;也可以理解为线性变换。 某个向量左乘矩阵表示向量在用新的基向量表示对应在原始坐标系下的坐标&#xff0c;也可以视为经过线性变换后的坐标。 原始基向量都是单位矩阵&#xff0c;其他矩阵都…

284.【华为OD机试真题】二叉树的广度优先遍历(二叉树的构建和层次遍历—JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-二叉树的广度优先遍历二.解题思路三.题解代码P…

idea 2018.3永久简单激活。激活码

1.打开hosts文件将 0.0.0.0 account.jetbrains.com 添加到文件末尾 C:\Windows\System32\drivers\etc\hosts 2.注册码&#xff1a; MNQ043JMTU-eyJsaWNlbnNlSWQiOiJNTlEwNDNKTVRVIiwibGljZW5zZWVOYW1lIjoiR1VPIEJJTiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaW…

AutoSAR(基础入门篇)11.2-存储处理与Block

目录 一、NVRAM Block NVRAM Block的类型 二、Fee Block 三、Ea Block 四、总结 同通信的PDU一样,存储功能也需要一些特殊的数据结构来存放和管理我们的NV数据(NV data) 一、NVRAM Block NVRAM Block的作用类似于IPDU,但它们两仅仅只是作用上相似,其功能实现是完全…

数据结构知识点总结-线性表(1)-线性表的定义、基本操作、顺序表表示

线性表 定义 线性表是具有相同数据类型的N&#xff08;N>0&#xff09;个元素的有限序列&#xff0c;其中N为表长&#xff0c;当N0时线性表是一张空表。 线性表的逻辑特征&#xff1a;每个非空的线性表都有一个表头元素和表尾元素&#xff0c;中间的每个元素有且仅有一个直…

有趣的CSS - 弹跳的圆

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用css写一个好玩的不停弹跳变形的圆。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页…

Leetcode题解20.有效的括号

题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型…

亿道丨三防平板电脑厂家丨三防平板PDA丨三防工业平板:数字时代

在当今数字化时代&#xff0c;我们身边的世界变得越来越依赖于智能设备和无线连接。其中&#xff0c;三防平板PDA&#xff08;Personal Digital Assistant&#xff09;作为一种功能强大且耐用的数字工具&#xff0c;正在引领我们进入数字世界的全新征程。 三防平板PDA结合了平板…

RabbitMQ消息堆积

消息堆积是指在消息队列中&#xff0c;因为生产消息的速度超过消费消息的速度&#xff0c;导致大量消息在队列中积压的现象。在RabbitMQ中&#xff0c;处理消息堆积的策略通常包括以下几个方面&#xff1a; 增加消费者数量&#xff08;水平扩展&#xff09;&#xff1a;通过增加…

【Elasticsearch专栏 07】深入探索:Elasticsearch的倒排索引如何进行模糊查询和通配符查询

文章目录 Elasticsearch的倒排索引如何进行模糊查询和通配符查询01 模糊查询&#xff08;Fuzzy Query&#xff09;02 通配符查询&#xff08;Wildcard Query&#xff09;03 查询性能优化04 总结 Elasticsearch的倒排索引如何进行模糊查询和通配符查询 Elasticsearch的倒排索引…

LeetCode 0235.二叉搜索树的最近公共祖先:用搜索树性质(不遍历全部节点)

【LetMeFly】235.二叉搜索树的最近公共祖先&#xff1a;用搜索树性质&#xff08;不遍历全部节点&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/ 给定一个二叉搜索树, 找到该树中两个指定节点的最近公…

2024全国水科技大会暨减污降碳协同增效创新与实践论坛(八)

召集人&#xff1a;王洪臣 中国人民大学环境学院教授 姚 宏 北京交通大学教授 为大会征集“绿色低碳污水厂案例”&#xff0c;欢迎各相关单位积极报名&#xff01; 一、会议背景 生态环境部、国家发展和改革委员会等七部门印发《减 污降碳协同增效实施方案》中明确提出推进水…

Linux下minishell项目的编写

项目目标 1.编写函数打印初始界面以及显示输入的命令&#xff08;由于程序一直执行&#xff0c;需要在循环内执行&#xff09; 2.编写接收用户输入的命令的函数 3.编写使命令与功能匹配的函数 4.将界面输入的字符串分割为命令以及传入函数的数据 5.完成minishell的基本功能…

【C++】C++对C语言的关系,拓展及命名空间的使用

文章目录 &#x1f4dd;C简述C融合了3种不同的编程方式&#xff1a;C和C语言关系是啥呢&#xff1f;C标准 &#x1f320;C应用&#x1f320;C语言优点第一个C程序 &#x1f320;命名空间&#x1f320;命名空间的使用命名空间的定义 &#x1f320;怎么使用命名空间中的内容呢&am…

测试C#使用ViewFaceCore实现图片中的人脸遮挡

基于ViewFaceCore和DlibDotNet都能实现人脸识别&#xff0c;准备做个遮挡图片中人脸的程序&#xff0c;由于暂时不清楚DlibDotNet返回的人脸尺寸与像素的转换关系&#xff0c;最终决定使用ViewFaceCore实现图片中的人脸遮挡。   新建Winform项目&#xff0c;在Nuget包管理器中…

【深度学习】微调ChatGlm3-6b

1.前言 指令微调ChatGlm3-6b。微调教程在github地址中给出&#xff0c;微调环境是Qwen提供的docker镜像为环境。 镜像获取方式&#xff1a;docker pull qwenllm/qwen:cu117 github地址&#xff1a;https://github.com/liucongg/ChatGLM-Finetuning 2.微调过程 github地址中的教…