이 도전을 극복하려면 Net/URL 패키지를 활용할 수 있습니다. 값 유형은 쿼리 스트링을 구축하기위한 편리한 메커니즘을 제공합니다. 다음 예를 고려하십시오 :
import (
"FMT"
"통나무"
"net/http"
"OS"
"net/url"
))
func main () {
// 초기 URL로 새 요청 객체를 만듭니다.
req, err : = http.newrequest ( "get", "http://api.themoviedb.org/3/tv/popular", nil)
err! = nil {인 경우
log.print (err)
os.exit (1)
}
// 요청 URL에서 기존 쿼리 매개 변수를 가져옵니다.
Q : = req.url.query ()
// QueryString 매개 변수를`Q` 맵에 추가하십시오.
q.add ( "API_KEY", "key_from_environment_or_flag")
Q.add ( "Other_thing", "Foo & Bar")
// 업데이트 된`Q` 맵을 원시 쿼리 스트링으로 인코딩하고 요청에 설정하십시오.
req.url.rawquery = q.encode ()
// 디버깅 목적으로 QueryString으로 최종 URL을 검색합니다.
fmt.println (req.url.string ())
// 출력 :
// http://api.themoviedb.org/3/tv/popular?another_thing=foo & bar & api_key = key_from_environment_or_flag
}
이 코드는 문자열 연결에 의존하지 않고 쿼리 스트링 매개 변수를 동적으로 빌드하는 방법을 보여줍니다. URL.Values의 Encode 메소드는 특수 문자가 전송을 위해 올바르게 인코딩되도록합니다.