Escape нужных символов в go

Urlencode на go для определённого набора символов
https://play.golang.org/p/PmA-XwvFS2

package main

import (
	"fmt"
)

// chars to escape are described in /usr/local/go/src/net/url/url.go:123 which links to RFC 3986 (§3.4); I just removed & and =
var charsToEscape = map[rune]bool{
	'$': true,
	'&': false, // it should remain unchanged
	'+': true,
	',': true,
	'/': true,
	':': true,
	';': true,
	'=': false, // it should remain unchanged
	'?': true,
	'@': true,
}

func main() {
	query := "@a$dsf"

	fmt.Println(FixURLQuery(query))
}


func FixURLQuery(rawURL string) string {
	fixedURL := make([]byte, len(rawURL) * 3)
	
	j := 0

	for i := 0; i < len(rawURL); i++ {
		c :=rawURL[i]
		if charsToEscape[rune(c)] == true {
			fixedURL[j] = '%'
			fixedURL[j+1] = "0123456789ABCDEF"[c>>4]
			fixedURL[j+2] = "0123456789ABCDEF"[c&15]
			j += 3
		} else {
			fixedURL[j] = c
			j++
		}
	}

	return string(fixedURL[:j])
}

LEAVE A COMMENT