博客园
虽然痛苦,却依旧要快乐,并相信着未来。

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

go生成文件夹与模板

起因

以前是用C/C++刷Leetcode时,将多个C/CPP文件放在同一个目录下,没有出任何问题,但是换成Go语言刷题。

在一个目录下创建多个go文件,每个文件都是以下

package main

func main(){
    
}

在vscode下会出问题,会报错,这让我很难受。

这样做,在Goland下没有问题,Goland YYDS.

发现以下目录结构,一个问题件下放置一个go文件,就不会报错。

[文件夹]go
→[文件]go.mod
[文件夹]1两数相加
→[文件]1两数相加.go
.....
[文件夹]2679矩阵中的和
→[文件]2679矩阵中的和.go

但是在VSCode下得先

  • 创建一个文件夹,修改文件名;
  • 创建go文件,修改文件名;
  • 写入go内容

但是,我们是程序员,为什么不写个程序自动生成?

所以有了下面的内容。

正文

package main

import (
	"fmt"
	"os"
	"regexp"
	"strings"
)

var Temp = []string{`package main
import (
	"fmt"
)`, `func main() {
	fmt.Println("Hello world!")
}`,
}

// 生成题目文件夹
func buildDirAndFile(name string, des string) {
	reg := regexp.MustCompile("\\s+|\\.")
	name = reg.ReplaceAllString(name, "")
	path, _ := os.Getwd()
	//path = "vscode_golang"
	targetPath := path + "\\" + name
	// fmt.Println(targetPath)
	err := os.Mkdir(targetPath, 0755)
	if err != nil {
		fmt.Println(targetPath, " 自动生成失败!")
	}
	fmt.Println(targetPath, " 自动生成成功!")
	file, err := os.Create(targetPath + "\\" + name + ".go")
	// Temp = append(Temp, "\n\n//"+des)
	newContent := Temp[0]
	for _, s := range strings.Split(des, "\n") {
		newContent += "\n//" + reg.ReplaceAllString(s, "")
	}
	newContent += "\n\n" + Temp[1]
	file.WriteString(newContent)
	file.Close()
}
func main() {
	var name string = "76. 最小覆盖子串"
	var description string = `给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。
	注意:
	对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
	如果 s 中存在这样的子串,我们保证它是唯一的答案。`

	fmt.Println("Hello world!")
	buildDirAndFile(name, description)
}

效果

package main
import (
	"fmt"
)
//给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。
//注意:
//对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。
//如果s中存在这样的子串,我们保证它是唯一的答案。

func main() {
	fmt.Println("Hello world!")
}
posted on   砖猿  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
 
点击右上角即可分享
微信分享提示