func (n BarcodeNumber) Digitable() string {
	s := n.toString()
	var f1 = fmt.Sprintf("%0"+strconv.Itoa(bankMinSize)+"d", n.BankId)
	f1 += strconv.Itoa(n.CurrencyId)
	f1 += string(s[19]) + "." + s[20:24]
	f1 += strconv.Itoa(module10(f1, maxModule10))
	var f2 = s[24:29] + "." + s[29:34]
	f2 += strconv.Itoa(module10(f2, minModule10))
	var f3 = s[34:39] + "." + s[39:44]
	f3 += strconv.Itoa(module10(f3, minModule10))
	var f4 = strconv.Itoa(n.Dv)
	var f5 = strconv.Itoa(n.DateDueFactor)
	f5 += fmt.Sprintf("%0"+strconv.Itoa(valueMinSize)+"d", n.Value)
	d := f1 + " " + f2 + " " + f3 + " " + f4 + " " + f5
	return d
}
Digitable mount the barcode digitable number,
taking all BarcodeNumber fields together:
Field 1: AAABC.CCCCX
A = FEBRABAN Bank identifier
B = the currency identifier
C = 20-24 barcode numbers
X = DV, using module10

Field 2: DDDDD.DDDDDX
D = 25-34 barcode numbers
X = DV, using module10

Field 3: EEEEE.EEEEEX
E = 35-44 barcode numbers
X = DV, using module10

Field 4: X
X = DV, BarcodeNumber.Dv

Field 5: UUUUVVVVVVVVVV
U = Due date factor
V = Value

return AAABC.CCCCX DDDDD.DDDDDX EEEEE.EEEEEX X UUUUVVVVVVVVVV
package boleto
import (
	"fmt"
	barcodeImage "github.com/boombuler/barcode"
	"github.com/boombuler/barcode/twooffive"
	"image"
	"strconv"
)
const (
	bankMinSize = 3
	valueMinSize = 10
	barcodeNumberMinSize = 19
	barcodeNumberMaxSize = 44
	bankNumbersSize = 25
)
type Barcode interface {
	Image() image.Image
	Digitable() string
	toString() string
	verification()
}
type BarcodeNumber struct {
	BankId int
	CurrencyId int
	DateDueFactor int
	Value int
	BankNumbers string
	Dv int
}
func (n BarcodeNumber) Image() image.Image {
	e, _ := twooffive.Encode(n.toString(), true)
	img, _ := barcodeImage.Scale(e, 410, 50)
	return img
}