Convert data to base64 encode in go

3.3k views Asked by At

I am new to go programming language and I'm stock on this scenario on my code. Here's my example code:

a := genreAPI{Genre{"Pop"}, Genre{"Rock"}}
fmt.Println("Value of a :", a)

The current output is: Value of a : [{Pop} {Rock}]

How can I achieved an output like this: Value of a : [{UG9w} {Um9jaw==}] which is a base64 encode?

2

There are 2 answers

2
Salvador Dali On

I am not sure what exactly is not clear from the documentation. Not only it has a clear name which explains states what the method is doing, it also has an example.

package main

import (
    "encoding/base64"
    "fmt"
)

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

Go Playground

1
tomasz On

You can customise the output of print functions by providing a String() method for your type. Either for the whole Genre or just for the name variable.

Example:

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
}