Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了golang:给定一个字符串,输出一个等效的golang字符串文字大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
编写输出有效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 a\ntest!"))
    println(rePR.StrLit("As is\x00this!"))
}

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

"Hello World!"
a
"a"
"\"a\""
"This is a\ntest!"
"As is\x00this!"

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

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包中有很多有用的格式动词,所以一定要查看它的文档中的纲要.

大佬总结

以上是大佬教程为你收集整理的golang:给定一个字符串,输出一个等效的golang字符串文字全部内容,希望文章能够帮你解决golang:给定一个字符串,输出一个等效的golang字符串文字所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。