gpt4 book ai didi

file - Golang 使用 bufio.Scanner 多次扫描同一行

转载 作者:数据小太阳 更新时间:2023-10-29 03:21:08 28 4
gpt4 key购买 nike

我正在编写一个代码来扫描测试文件并将文本替换为其他内容。想用一个下面堆叠的不同文本替换同一组行。我找到的一个选择是使用 ioreader 的 tee 函数,但有没有更好的方法来实现同样的目的。

例如,我想要实现的是将下面一段文本中的 methodtype 子字符串替换为不同的字符串,例如 GETPOST , ETC。得到如下输出:

文本:

router.Methods("methodtype").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse,
append(options, kitHttp.ServerBefore())...

输出:

router.Methods("GET").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse,
append(options, kitHttp.ServerBefore())...


router.Methods("PUT").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse,
append(options, kitHttp.ServerBefore())...

router.Methods("POST").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse,
append(options, kitHttp.ServerBefore())...

最佳答案

为了替换文字,可以使用text/template代替bufio:

Playground :https://play.golang.org/p/7HYBqxtJ3KB

package main

import (
"fmt"
"text/template"
"os"
)

type method struct {
MethodType string
}

func main() {

buf := `router.Methods("{{.MethodType}}").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse, append(options, kitHttp.ServerBefore())...
`

tmpl, err := template.New("test").Parse(buf)
if err != nil {
panic(err)
}

methods := []string{"GET", "PUT", "POST"}

for _, m := range methods {
err = tmpl.Execute(os.Stdout, method{MethodType: m})
if err != nil {
fmt.Println(err.Error())
}
}

}

输出:

router.Methods("GET").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse, append(options, kitHttp.ServerBefore())...
router.Methods("PUT").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse, append(options, kitHttp.ServerBefore())...
router.Methods("POST").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse, append(options, kitHttp.ServerBefore())...

关于file - Golang 使用 bufio.Scanner 多次扫描同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53668600/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com