# 14. Strings

### String Types

String Types are used to store text like data.A string is an immutable sequence of bytes.

Go uses UTF-8 encoding to store strings.

> A character in UTF8 can be from 1 to 4 bytes long. UTF-8 can represent any character in the Unicode standard. UTF-8 is backwards compatible with ASCII. UTF-8 is the preferred encoding for e-mail and web pages - W3Schools.com

### Declaring String

Strings are declared using one of the following ways:

{% code title="main.go" %}

```go
	var str1 string = "Hello, World!"
	var str2 = "Hello, World!"
	str3 := "Hello, World!"
```

{% endcode %}

Zero value for string is empty string `""`

### Length of string

Build in `len` function can  be used to get number of bytes in string

{% code title="main.go" %}

```go
fmt.Printf("length of str1 is %d \n", len(str1))
```

{% endcode %}

### Sub-string operation

We can easily create substring from existing string using `s[i,j].`This operation always generates new string since string are immutable. `i` indicates starting index for substring including `i` and `j` indicates end index excluding `j`

{% code title="main.go" %}

```go
str4 := str1[7:13]
fmt.Println(str4)
```

{% endcode %}

### Blog Posts

{% embed url="<https://blog.golang.org/strings>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.codewithgo.com/strings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
