加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang:给定一个字符串,输出一个等效的golang字符串文字

发布时间:2020-12-16 19:29:31 所属栏目:大数据 来源:网络整理
导读:编写输出有效go代码的应用程序可能最好使用内置的“go”包及其一些子包(“go / ast”,“go / token”,“go / printer”等). 要创建字符串文字表达式,您需要创建ast.BasicLit: l := ast.BasicLit{Kind: token.STRING,Value: ""Hello world!""} 在我的go程
编写输出有效go代码的应用程序可能最好使用内置的“go”包及其一些子包(“go / ast”,“go / token”,“go / printer”等).

要创建字符串文字表达式,您需要创建ast.BasicLit:

l := &ast.BasicLit{Kind: token.STRING,Value: ""Hello world!""}

在我的go程序中,我有一个字符串,我需要创建一个ast.BasicLit,当输出时会生成一个忠实再现相同字符串的字符串文字.为了做到这一点,我必须从字符串派生一个字符串,该字符串代表表示字符串的go-syntax文字. (这个概念是如此元,很难描述而没有歧义.)

我正在寻找的东西基本上相当于Python内置的repr().这是一个你可以称之为JavaScript中eval()的“反面”的操作.

一个例子应该有助于说明我在寻找什么.

package main

import (
    "repr"
)

// Assume the operation I'm hoping to find is implemented in the package "repr" as a function called "StrLit()" with the signature "func(v string) string".

func main() {
    println(repr.StrLit("Hello World!"))
    println("a")
    println(repr.StrLit("a"))
    println(repr.StrLit(repr.StrLit("a")))
    println(repr.StrLit("This is antest!"))
    println(repr.StrLit("As isx00this!"))
}

调用此程序时应输出以下内容:

"Hello World!"
a
"a"
""a""
"This is antest!"
"As isx00this!"

虽然我的具体问题涉及字符串,但我会对一般解决方案感兴趣,该解决方案可以处理任何类型的值(整数类型,浮点类型,甚至复杂类型),如下所示:

package main

import (
    "repr"
)

// Assume this time that repr.StrLit() has the signature "func(v interface{}) string".

func main() {
    var a int = 5
    println(repr.StrLit(a))
    var c complex128 = 1.0+1.0i
    println(repr.StrLit(c))
}

该程序应输出:

5
1.0+1.0i

我看了很多标准的库文档但是没有找到任何看起来与我正在寻找的东西相近的东西.希望你们大家可以帮助我.

提前致谢!

你想要 http://golang.org/pkg/fmt/#Sprintf与%#v格式化程序.

lit:= fmt.Sprintf(“%#v”,“foo”)将打印出“foo”

有关各种不同类型的示例,请参阅:http://play.golang.org/p/nFAKFObXE5,包括结构等复杂文字.

fmt包中有很多有用的格式动词,所以一定要查看它的文档中的纲要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读