58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
// For more tutorials: https://blog.learngoprogramming.com
|
|
//
|
|
// Copyright © 2018 Inanc Gumus
|
|
// Learn Go Programming Course
|
|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
//
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
func main() {
|
|
// GOALS:
|
|
// 1- String value is immutable
|
|
// 2- Indexing vs Slicing
|
|
// 3- Using bytes for manipulating strings
|
|
|
|
mood := "wonder"
|
|
|
|
// 1- a string value is immutable (read-only)
|
|
// mood[1] = 'a'
|
|
|
|
// 2- Indexing vs Slicing
|
|
|
|
// "wonder"
|
|
// ^ ^^^^
|
|
// | ||||
|
|
// "wandering"
|
|
|
|
// "w" + "a" + "nder" + "ing"
|
|
|
|
// wandering := mood[0] + "a" + mood[2:] + "ing"
|
|
// fmt.Printf("mood[0] : %T - %[1]v\n", mood[0]) // byte
|
|
// fmt.Printf("mood[0:1] : %T - %[1]v\n", mood[0:1]) // string
|
|
|
|
// wandering := mood[:1] + "a" + mood[2:] + "ing"
|
|
fmt.Println(mood)
|
|
// fmt.Println(wandering)
|
|
|
|
// 3- converting creates a new byte slice (allocation)
|
|
b := []byte(mood)
|
|
b[1] = 'a'
|
|
|
|
// b = append(b, 'i', 'n', 'g')
|
|
// b = append(b, []byte{'i', 'n', 'g'})
|
|
b = append(b, "ing"...)
|
|
|
|
// starts copying from the first element
|
|
copy(b, "listen")
|
|
|
|
// starts copying from the "7th" element
|
|
copy(b[6:], "ed.")
|
|
|
|
fmt.Println(string(b))
|
|
}
|