将数据转换为go中的base64编码

将数据转换为go中的base64编码,go,base64,Go,Base64,我是编程语言新手,我的代码中有这个场景。 下面是我的示例代码: a := genreAPI{Genre{"Pop"}, Genre{"Rock"}} fmt.Println("Value of a :", a) 当前输出为:a:[{Pop}{Rock}] 我如何实现这样的输出: a:[{UG9w}{Um9jaw==}]的值 哪个是base64编码?我不确定文档中到底有什么不清楚。它不仅有一个清晰的说明,说明了该方法正在做什么,而且还有一个示例 package main import (

我是编程语言新手,我的代码中有这个场景。 下面是我的示例代码:

a := genreAPI{Genre{"Pop"}, Genre{"Rock"}}
fmt.Println("Value of a :", a)
当前输出为:
a:[{Pop}{Rock}]

我如何实现这样的输出:
a:[{UG9w}{Um9jaw==}]的值

哪个是base64编码?

我不确定文档中到底有什么不清楚。它不仅有一个清晰的说明,说明了该方法正在做什么,而且还有一个示例

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    data := []byte("Pop")
    str := base64.StdEncoding.EncodeToString(data)
    fmt.Println(str) // UG9w
}

通过为您的类型提供
String()
方法,您可以自定义打印函数的输出。对于整个
类型
或仅针对name变量

例如:

package main

import (
    "encoding/base64"
    "fmt"
)

type Base64String string

func (b Base64String) String() string {
    return base64.StdEncoding.EncodeToString([]byte(b))
}

type Genre struct {
    Name Base64String
}

func main() {
    a := []Genre{Genre{"Pop"}, Genre{"Rock"}}
    fmt.Println(a)                 // prints [{UG9w} {Um9jaw==}]
    fmt.Println(string(a[0].Name)) // prints Pop
}

看,我真的不理解go文档,先生,你能给我一个工作示例吗?当我尝试使用go文档时,
encoder:=base64.NewEncoder(base64.StdEncoding,os.Stdout)encoder.Write(a)encoder.Close()
我遇到一个错误,
无法将(genreAPI类型)用作类型[]将参数中的字节写入编码器。写入
示例数据为byte
data:=[]字节(“Pop”)
而我的数据是这种格式的
a:=genreAPI{Genre{Genre{Pop},Genre{Rock}
当我执行程序时,它给出了一个错误
无法使用(genreAPI类型)作为类型[]将参数中的字节写入编码器。Write
@LeViNcE:您可以尝试在此处添加称为“编程”的内容:当然,您不能在EncodeToString中添加任何无意义的内容,尤其是因为您不希望所有内容都是base64编码的,而只希望对类型的内容进行编码。因此,只需将EncodeToString应用于您想要编码的内容,因为这似乎是字符串,您可以轻松地将它们转换为适合编码的[]字节。感谢@tomasz的回答,先生,还有一个问题,在您给定的示例中,
Name Base64String
流派
的结构,而在我的例子中,我使用
Name String
是因为数据来自数据库,当我使用
Base64String
时,没有从数据库获取数据,而当我使用
String
时,输出不是base64encode。如何使用
Genre
struct上的
Name String
字段实现Base64编码输出。非常感谢。