> For the complete documentation index, see [llms.txt](https://davidwinalda94.gitbook.io/mastering-golang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://davidwinalda94.gitbook.io/mastering-golang/url-parsing.md).

# URL Parsing

Kita dapat memanipulasi string URL menggunakan [package](https://golang.org/pkg/net/url/) Go yaitu `net/url` .

Misalnya kita mempunyai sebuah data string URL sebagai berikut:

```
"https://davidwinalda.io/hello?firstname=david&lastname=winalda&age=26"
```

Kita akan menggunakan package `net/url` untuk mendapatkan dan memanipulasi informasi yang ada pada URL di atas.

Pada file `main.go` , kita akan membuat program seperti berikut ini:

```go
package main

import (
	"fmt"
	"net/url"
)

func main() {
	urlString := "https://davidwinalda.io/hello?firstname=david&lastname=winalda&age=26"
	// Parse URL
	url, err := url.Parse(urlString)

	if err != nil {
		fmt.Println(err.Error())
	}

	// Show string URL
	fmt.Println("Url:", urlString)

	// Show Schema
	fmt.Println("Protocol:", url.Scheme)
	// Show Host
	fmt.Println("Host:", url.Host)
	// Show Path
	fmt.Println("Path:", url.Path)

	firstName := url.Query()["firstname"][0]
	lastName := url.Query()["lastname"][0]
	age := url.Query()["age"][0]
	fmt.Println("Firstname:", firstName)
	fmt.Println("Lastname:", lastName)
	fmt.Println("Age:", age)
}
```

Jika program di atas dijalankan, maka akan tampil output seperti berikut ini:

![Menampilkan informasi yang ada pada sebuah string URL](https://2969676661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQaVepPFjuLoNjbs6f8%2F-MTp96MAX38rNl5Fdz7F%2F-MTpAUvyD9IARoVnZBv2%2FScreen%20Shot%202021-02-18%20at%2019.46.53.png?alt=media\&token=5f5813b4-94ea-4993-acb1-a25e6e9c3e5b)
