Compare commits
10 Commits
40b6e50a16
...
289fc4b56c
| Author | SHA1 | Date | |
|---|---|---|---|
| 289fc4b56c | |||
| 3c2299b90f | |||
| eba1e3ec49 | |||
| ec3676ddd4 | |||
| 248388f5de | |||
| 1c925bc32a | |||
| a2dc92f941 | |||
| 12c600ef09 | |||
| 110aab4934 | |||
| f0c2e76a4f |
22
Section10/81.go
Normal file
22
Section10/81.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
numbers := []int{2, 3}
|
||||
|
||||
numbers = append(numbers, 10)
|
||||
fmt.Println(numbers)
|
||||
|
||||
numbers = append(numbers, 20, 30, 40)
|
||||
fmt.Println(numbers)
|
||||
|
||||
n := []int{100, 200}
|
||||
numbers = append(numbers, n...)
|
||||
fmt.Println(numbers)
|
||||
|
||||
src := []int{10, 20, 30}
|
||||
dst := make([]int, len(src))
|
||||
nn := copy(dst, src)
|
||||
fmt.Println(src, dst, nn)
|
||||
}
|
||||
22
Section10/82.go
Normal file
22
Section10/82.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
a := [5]int{1, 2, 3, 4, 5}
|
||||
b := a[1:3]
|
||||
fmt.Printf("%v, %T\n", b, b)
|
||||
|
||||
s1 := []int{1, 2, 3, 4, 5, 6}
|
||||
s2 := s1[1:3]
|
||||
fmt.Println(s2)
|
||||
fmt.Println(s1[2:])
|
||||
fmt.Println(s1[:3])
|
||||
fmt.Println(s1[:])
|
||||
|
||||
s1 = append(s1[:4], 100)
|
||||
fmt.Println(s1)
|
||||
|
||||
s1 = append(s1[:4], 200)
|
||||
fmt.Println(s1)
|
||||
}
|
||||
54
Section10/84.go
Normal file
54
Section10/84.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// s1 := []int{10, 20, 30, 40, 50}
|
||||
// s3, s4 := s1[0:2], s1[1:3]
|
||||
|
||||
// s3[1] = 600
|
||||
|
||||
// fmt.Println(s1)
|
||||
// fmt.Println(s4)
|
||||
|
||||
// arr1 := [4]int{10, 20, 30, 40}
|
||||
// slice1, slice2 := arr1[0:2], arr1[1:3]
|
||||
|
||||
// arr1[1] = 2
|
||||
|
||||
// fmt.Println(slice1)
|
||||
// fmt.Println(slice2)
|
||||
// fmt.Println(arr1)
|
||||
|
||||
cars := []string{"Ford", "Honda", "Audi", "Range Rover"}
|
||||
newCars := []string{}
|
||||
|
||||
newCars = append(newCars, cars[0:2]...)
|
||||
|
||||
cars[0] = "Nissan"
|
||||
fmt.Println(cars, newCars)
|
||||
|
||||
s1 := []int{10, 20, 30, 40, 50}
|
||||
newSlice := s1[0:3]
|
||||
fmt.Println(len(newSlice), cap(newSlice))
|
||||
|
||||
newSlice = s1[2:5]
|
||||
fmt.Println(len(newSlice), cap(newSlice))
|
||||
|
||||
fmt.Printf("%p\n", &s1)
|
||||
|
||||
fmt.Printf("%p %p \n", &s1, &newSlice)
|
||||
|
||||
newSlice[0] = 1000
|
||||
fmt.Println("s1: ", s1)
|
||||
|
||||
a := [5]int{1, 2, 3, 4, 5}
|
||||
s := []int{1, 2, 3, 4, 5}
|
||||
|
||||
fmt.Printf("array's size in bytes: %d \n", unsafe.Sizeof(a))
|
||||
fmt.Printf("slice's size in bytes: %d \n", unsafe.Sizeof(s))
|
||||
|
||||
}
|
||||
32
Section10/87.go
Normal file
32
Section10/87.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
var nums []int
|
||||
fmt.Printf("%#v\n", nums)
|
||||
|
||||
fmt.Printf("Lenght: %d, Capacity: %d \n", len(nums), cap(nums))
|
||||
|
||||
nums = append(nums, 1, 2)
|
||||
fmt.Printf("Lenght: %d, Capacity: %d \n", len(nums), cap(nums))
|
||||
|
||||
nums = append(nums, 3)
|
||||
fmt.Printf("Lenght: %d, Capacity: %d \n", len(nums), cap(nums))
|
||||
|
||||
nums = append(nums, 4)
|
||||
fmt.Printf("Lenght: %d, Capacity: %d \n", len(nums), cap(nums))
|
||||
|
||||
nums = append(nums, 5)
|
||||
fmt.Printf("Lenght: %d, Capacity: %d \n", len(nums), cap(nums))
|
||||
|
||||
nums = append(nums[0:4], 200, 300, 400, 500, 600)
|
||||
fmt.Printf("Lenght: %d, Capacity: %d \n", len(nums), cap(nums))
|
||||
fmt.Println(nums)
|
||||
|
||||
letters := []string{"A", "B", "C", "D", "E", "F"}
|
||||
letters = append(letters[:1], "X", "Y")
|
||||
fmt.Println(letters, len(letters), cap(letters))
|
||||
fmt.Println(letters[3:6])
|
||||
|
||||
}
|
||||
21
Section11/89-1.go
Normal file
21
Section11/89-1.go
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
Coding Exercise #1
|
||||
|
||||
Using a composite literal declare and initialize
|
||||
a slice of type string with 3 elements.
|
||||
|
||||
Iterate over the slice and print each element in
|
||||
the slice and its index.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
countries := []string{"Romania", "Brazil", "Germany"}
|
||||
for i, v := range countries {
|
||||
fmt.Printf("Index: %d, Element: %q\n", i, v)
|
||||
}
|
||||
|
||||
}
|
||||
45
Section11/89-2.go
Normal file
45
Section11/89-2.go
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
Coding Exercise #2
|
||||
|
||||
There are some errors in the following Go program. Try to identify the errors,
|
||||
change the code and run the program without errors.
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
mySlice := []float64{1.2, 5.6}
|
||||
|
||||
mySlice[2] = 6
|
||||
|
||||
a := 10
|
||||
mySlice[0] = a
|
||||
|
||||
mySlice[3] = 10.10
|
||||
|
||||
mySlice = append(mySlice, a)
|
||||
|
||||
fmt.Println(mySlice)
|
||||
|
||||
}
|
||||
*/
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
mySlice := []float64{1.2, 5.6}
|
||||
|
||||
mySlice[1] = 6
|
||||
|
||||
a := 10
|
||||
mySlice[0] = float64(a)
|
||||
|
||||
mySlice[1] = 10.10
|
||||
|
||||
mySlice = append(mySlice, float64(a))
|
||||
|
||||
fmt.Println(mySlice)
|
||||
|
||||
}
|
||||
32
Section11/89-3.go
Normal file
32
Section11/89-3.go
Normal file
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
Coding Exercise #3
|
||||
|
||||
1. Declare a slice called nums with three float64 numbers.
|
||||
|
||||
2. Append the value 10.1 to the slice
|
||||
|
||||
3. In one statement append to the slice the values: 4.1, 5.5 and 6.6
|
||||
|
||||
4. Print out the slice
|
||||
|
||||
5. Declare a slice called n with two float64 values
|
||||
|
||||
6. Append n to nums
|
||||
|
||||
7. Print out the nums slice
|
||||
*/
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
nums := []float64{1.1, 2.1, 3.1}
|
||||
nums = append(nums, 10.1)
|
||||
fmt.Println(nums)
|
||||
nums = append(nums, 4.1, 5.5, 6.6)
|
||||
fmt.Println(nums)
|
||||
|
||||
n := []float64{8.1, 9.3}
|
||||
nums = append(nums, n...)
|
||||
fmt.Println(nums)
|
||||
}
|
||||
58
Section11/89-4.go
Normal file
58
Section11/89-4.go
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
Create a Go program that reads some numbers from the command line and then
|
||||
calculates the sum and the product of all the numbers given at the command line.
|
||||
|
||||
The user should give between 2 and 10 numbers.
|
||||
|
||||
Notes:
|
||||
|
||||
- the program should be run in a terminal (go run main.go) not in Go Playground
|
||||
|
||||
- example:
|
||||
|
||||
go run main.go 3 2 5
|
||||
|
||||
Expected output: Sum: 10, Product: 30
|
||||
*/
|
||||
|
||||
// run this program in a terminal with arguments
|
||||
// ex: go run main.go 5 7.1 9.9 10
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
if len(os.Args) < 2 { //if not run with arguments
|
||||
log.Fatal("Please run the program with arguments (2-10 numbers)!")
|
||||
|
||||
}
|
||||
|
||||
//taking the arguments in a new slice
|
||||
args := os.Args[1:]
|
||||
|
||||
// declaring and initializing sum and product of type float64
|
||||
sum, product := 0., 1.
|
||||
|
||||
if len(args) < 2 || len(args) > 10 {
|
||||
fmt.Println("Please enter between 2 and 10 numbers!")
|
||||
} else {
|
||||
|
||||
for _, v := range args {
|
||||
num, err := strconv.ParseFloat(v, 64)
|
||||
if err != nil {
|
||||
continue //if it can't convert string to float64, continue with the next number
|
||||
}
|
||||
sum += num
|
||||
product *= num
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Printf("Sum: %v, Product: %v\n", sum, product)
|
||||
}
|
||||
24
Section11/89-5.go
Normal file
24
Section11/89-5.go
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
Consider the following slice declaration:
|
||||
nums := []int{5, -1, 9, 10, 1100, 6, -1, 6}
|
||||
|
||||
Using a slice expression and a for loop iterate over
|
||||
the slice ignoring the first and the last two elements.
|
||||
|
||||
Print those elements and their sum.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
nums := []int{5, -1, 9, 10, 1100, 6, -1, 6}
|
||||
sum := 0
|
||||
for _, v := range nums[2 : len(nums)-2] {
|
||||
fmt.Println(v)
|
||||
sum += v
|
||||
}
|
||||
fmt.Println("Sum:", sum)
|
||||
|
||||
}
|
||||
23
Section11/89-6.go
Normal file
23
Section11/89-6.go
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
Consider the following slice declaration:
|
||||
friends := []string{"Marry", "John", "Paul", "Diana"}
|
||||
|
||||
Using copy() function create a copy of the slice. Prove that the slices
|
||||
are not connected by modifying one slice and notice that the other slice is not modified.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
friends := []string{"Marry", "John", "Paul", "Diana"}
|
||||
|
||||
yourFriends := make([]string, len(friends))
|
||||
copy(yourFriends, friends)
|
||||
|
||||
yourFriends[0] = "Dan"
|
||||
|
||||
fmt.Println(friends, yourFriends)
|
||||
|
||||
}
|
||||
24
Section11/89-7.go
Normal file
24
Section11/89-7.go
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
Consider the following slice declaration:
|
||||
friends := []string{"Marry", "John", "Paul", "Diana"}
|
||||
|
||||
Using append() function create a copy of the slice.
|
||||
Prove that the slices are not connected by modifying
|
||||
one slice and notice that the other slice is not modified.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
friends := []string{"Marry", "John", "Paul", "Diana"}
|
||||
|
||||
yourFriends := []string{}
|
||||
|
||||
yourFriends = append(yourFriends, friends...)
|
||||
|
||||
yourFriends[0] = "Dan"
|
||||
|
||||
fmt.Println(friends, yourFriends)
|
||||
}
|
||||
23
Section11/89-8.go
Normal file
23
Section11/89-8.go
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
Consider the following slice declaration:
|
||||
|
||||
years := []int{2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010}
|
||||
|
||||
Using a slice expression and append() function create a new slice called
|
||||
newYears that contains the first 3 and the last 3 elements of the slice.
|
||||
newYears should be []int{2000, 2001, 2002, 2008, 2009, 2010}
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
years := []int{2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010}
|
||||
newYears := []int{}
|
||||
|
||||
newYears = append(years[:3], years[len(years)-3:]...)
|
||||
|
||||
fmt.Printf("%#v\n", newYears)
|
||||
|
||||
}
|
||||
32
Section12/90.go
Normal file
32
Section12/90.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
s1 := "Hi there Go!"
|
||||
fmt.Println(s1)
|
||||
|
||||
fmt.Println("He sais: \"Hello!\"")
|
||||
fmt.Println(`He sais: "Hello again!"`)
|
||||
|
||||
s2 := `I like \n Go!` //raw string
|
||||
fmt.Println(s2)
|
||||
|
||||
fmt.Println("Price: 100\nBrand: Nike")
|
||||
fmt.Println(`
|
||||
Price: 100
|
||||
Brand: Nike
|
||||
`)
|
||||
fmt.Println(`C:\Users\Sebastian`)
|
||||
fmt.Println("C:\\Users\\Sebastian")
|
||||
|
||||
var s3 = "I love " + "Go " + "Programming"
|
||||
fmt.Println(s3 + "!")
|
||||
|
||||
fmt.Println("Element at index 0:", s3[0])
|
||||
|
||||
// s3[5] = 'x'
|
||||
fmt.Printf("%s\n", s3)
|
||||
fmt.Printf("%q\n", s3)
|
||||
|
||||
}
|
||||
29
Section12/93.go
Normal file
29
Section12/93.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var1, var2 := 'a', 'b'
|
||||
|
||||
fmt.Printf("Type: %T, Value: %d\n", var1, var2)
|
||||
|
||||
str := "țară"
|
||||
fmt.Println(len(str))
|
||||
|
||||
fmt.Println("Byte (non rune) at position 1:", str[1])
|
||||
|
||||
for i := 0; i < len(str); i++ {
|
||||
fmt.Printf("%c", str[i])
|
||||
}
|
||||
fmt.Println("\n" + strings.Repeat("#", 20))
|
||||
for i := 0; i < len(str); {
|
||||
r, size := utf8.DecodeRuneInString(str[i:])
|
||||
fmt.Printf("%c", r)
|
||||
i += size
|
||||
}
|
||||
fmt.Println("\n" + strings.Repeat("#", 20))
|
||||
}
|
||||
18
Section12/94.go
Normal file
18
Section12/94.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
func main() {
|
||||
s1 := "Golang"
|
||||
fmt.Println(len(s1))
|
||||
|
||||
name := "Codruța"
|
||||
fmt.Println(len(name))
|
||||
|
||||
n := utf8.RuneCountInString(name)
|
||||
fmt.Println(n)
|
||||
|
||||
}
|
||||
19
Section12/96.go
Normal file
19
Section12/96.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
s1 := "I love Golang!"
|
||||
fmt.Println(s1[2:5])
|
||||
|
||||
s2 := "我爱戈兰"
|
||||
fmt.Println(s2[0:2])
|
||||
|
||||
rs := []rune(s2)
|
||||
fmt.Printf("%T\n", rs)
|
||||
|
||||
fmt.Println(string(rs[0:3]))
|
||||
|
||||
}
|
||||
64
Section12/98.go
Normal file
64
Section12/98.go
Normal file
@@ -0,0 +1,64 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
p := fmt.Println
|
||||
result := strings.Contains("I love Go Programming!", "love")
|
||||
p(result)
|
||||
|
||||
result = strings.ContainsAny("success", "xys")
|
||||
p(result)
|
||||
|
||||
result = strings.ContainsRune("golang", 'g')
|
||||
p(result)
|
||||
|
||||
n := strings.Count("cheese", "e")
|
||||
p(n)
|
||||
|
||||
n = strings.Count("Five", "")
|
||||
p(n)
|
||||
|
||||
p(strings.ToLower("GO PyTHON jaVA"))
|
||||
p(strings.ToUpper("GO PyTHON jaVA"))
|
||||
|
||||
p("go" == "go")
|
||||
p("GO" == "go")
|
||||
p(strings.ToLower("GO") == strings.ToLower("go"))
|
||||
p(strings.EqualFold("GO", "go"))
|
||||
|
||||
myStr := strings.Repeat("ab", 10)
|
||||
p(myStr)
|
||||
|
||||
myStr = strings.Replace("192.168.0.1", ".", ":", -1)
|
||||
p(myStr)
|
||||
|
||||
myStr = strings.ReplaceAll("192.168.0.1", ".", ":")
|
||||
p(myStr)
|
||||
|
||||
s := strings.Split("a,b,c", ",")
|
||||
fmt.Printf("%T\n", s)
|
||||
fmt.Printf("%#v\n", s)
|
||||
|
||||
s = strings.Split("Go for Go!", "")
|
||||
fmt.Printf("%#v\n", s)
|
||||
|
||||
s = []string{"I", "learn", "Golang"}
|
||||
myStr = strings.Join(s, "-")
|
||||
p(myStr)
|
||||
|
||||
myStr = "Orange Green \n Blue Yellow"
|
||||
fields := strings.Fields(myStr)
|
||||
fmt.Printf("%T\n", fields)
|
||||
fmt.Printf("%#v\n", fields)
|
||||
|
||||
s1 := strings.TrimSpace("\t Goodbye Windows, Welcome Linux!\n ")
|
||||
fmt.Printf("%q\n", s1)
|
||||
|
||||
s2 := strings.Trim("...Hello, Gophers!!!?", ".!?")
|
||||
fmt.Printf("%q\n", s2)
|
||||
|
||||
}
|
||||
39
Section13/1.go
Normal file
39
Section13/1.go
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
Coding Exercise #1
|
||||
|
||||
1. Using the var keyword declare a string called name and initialize it with your name.
|
||||
|
||||
2. Using short declaration syntax declare a string called country and assign the country you are living in to the string variable.
|
||||
|
||||
3. Print the following string on multiple lines like this:
|
||||
|
||||
Your name: `here the value of name variable`
|
||||
|
||||
Country: `here the value of country variable`
|
||||
|
||||
4. Print out the following strings:
|
||||
|
||||
a) He says: "Hello"
|
||||
|
||||
b) C:\Users\a.txt
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
var name string = "Andrei"
|
||||
country := "Romania"
|
||||
|
||||
fmt.Printf("Your name: %s\nCountry: %s\n", name, country)
|
||||
|
||||
//equivalent to:
|
||||
fmt.Printf(`Your name: %s
|
||||
Country: %s
|
||||
`, name, country)
|
||||
|
||||
fmt.Println("He says: \"Hello\"")
|
||||
fmt.Println("C:\\Users\\a.txt")
|
||||
|
||||
}
|
||||
29
Section13/2.go
Normal file
29
Section13/2.go
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
1. Declare a rune called r that stores the non-ascii letter ă
|
||||
|
||||
2. Print out the type of r
|
||||
|
||||
3. Declare 2 strings that contains the values ma and m
|
||||
|
||||
4. Concatenate the strings and the rune in a new string (the new string will hold the value mamă ).
|
||||
|
||||
BTW: mamă means mother in Romanian.
|
||||
|
||||
Note: You should convert rune to string to contatenate it to another string.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
r := 'ă' // declaring a rune
|
||||
fmt.Printf("r type:%T\n", r) // rune is alias to int32
|
||||
|
||||
s1, s2 := "ma", "m" // declaring 2 strings
|
||||
|
||||
// concatenating strings
|
||||
s := s1 + s2 + string(r) // converting rune to string (expliction conversion is required)
|
||||
fmt.Printf("s is %s\n", s) // => s is mamă
|
||||
|
||||
}
|
||||
35
Section13/3.go
Normal file
35
Section13/3.go
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Consider the following string declaration: s1 := "țară means country in Romanian"
|
||||
|
||||
1. Iterate over the string and print out byte by byte
|
||||
|
||||
2. Iterate over the string and print out rune by rune and the byte index where the rune starts in the string
|
||||
|
||||
Are you stuck? Do you want to see the solution for this exercise?
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
s1 := "țară means country in Romanian"
|
||||
|
||||
// iterating over the string and print out byte by byte
|
||||
fmt.Printf("Bytes in string: ")
|
||||
for i := 0; i < len(s1); i++ {
|
||||
|
||||
fmt.Printf("%v ", s1[i])
|
||||
}
|
||||
|
||||
fmt.Println()
|
||||
|
||||
// iterating over the string and print out rune by rune
|
||||
// and the byte index where the rune starts in the string
|
||||
for i, r := range s1 {
|
||||
fmt.Printf("byte index: %d -> rune: %c\n", i, r)
|
||||
}
|
||||
|
||||
fmt.Println()
|
||||
|
||||
}
|
||||
21
Section13/4.go
Normal file
21
Section13/4.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
func main() {
|
||||
s1 := "Go is cool!"
|
||||
|
||||
x := s1[0]
|
||||
fmt.Println(x)
|
||||
|
||||
// ERROR -> cannot assign to s1[0]
|
||||
// s1[0] = 'x'
|
||||
|
||||
// printing the number of runes in the string
|
||||
// fmt.Println(len(s1))
|
||||
fmt.Println(utf8.RuneCountInString(s1))
|
||||
|
||||
}
|
||||
31
Section13/5.go
Normal file
31
Section13/5.go
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
|
||||
Consider the following string declaration:s := "你好 Go!"
|
||||
|
||||
1. Convert the string to a byte slice.
|
||||
|
||||
2. Print out the byte slice
|
||||
|
||||
3. Iterate over the byte slice and print out each index and byte in the byte slice
|
||||
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
s := "你好 Go!"
|
||||
|
||||
// converting string to byte slice
|
||||
b := []byte(s)
|
||||
|
||||
// printing out the byte slice
|
||||
fmt.Printf("%#v\n", b)
|
||||
|
||||
// iterating over the byte slice and printing out each index and byte in the byte slice
|
||||
for i, v := range b {
|
||||
fmt.Printf("%d -> %d\n", i, v)
|
||||
}
|
||||
|
||||
}
|
||||
31
Section13/6.go
Normal file
31
Section13/6.go
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
|
||||
Consider the following string declaration:s := "你好 Go!"
|
||||
|
||||
1. Convert the string to a rune slice.
|
||||
|
||||
2. Print out the rune slice
|
||||
|
||||
3. Iterate over the rune slice and print out each index and rune in the rune slice
|
||||
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
s := "你好 Go!"
|
||||
|
||||
// converting string to rune slice
|
||||
r := []rune(s)
|
||||
|
||||
// printing out the rune slice
|
||||
fmt.Printf("%#v\n", r)
|
||||
|
||||
// iterating over the rune slice and printing out each index and rune in the rune slice
|
||||
for i, v := range r {
|
||||
fmt.Printf("%d -> %c\n", i, v)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user