习题:https://github.com/rundaisc/goLearningTest/tree/master/day1
day1
- 创建一个基于 for 的简单的循环。使其循环 10 次,并且使用 fmt 包打印出计数 器的值
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
fmt.Println("i =", i)
}
}
- 用 goto 改写 1 的循环。关键字 for 不可使用
package main
import "fmt"
func main() {
i := 0
BEGIN:
fmt.Println("i =", i)
i++
if i < 10 {
goto BEGIN
}
}
- 再次改写这个循环,使其遍历一个 array,并将这个 array 打印到屏幕上
package main
import "fmt"
func main() {
var arr [10]int
for i := 0; i < 10; i++ {
arr[i] = i
}
for _, num := range arr {
fmt.Println("i =", num)
}
}
- 解决这个叫做 Fizz-Buzz 的问题:编写一个程序,打印从 1 到 100 的数字。当是3个倍数数就打印 “Fizz” 代替数字,当是5的倍数就打印 “Buzz” 。当数字同时是3和5的倍数 时,打印 “FizzBuzz” 。
package main
import "fmt"
func main() {
i := 0
for i < 100 {
i++
if i%15 == 0 {
fmt.Println("FizzBuzz")
} else if i%3 == 0 {
fmt.Println("Fizz")
} else if i%5 == 0 {
fmt.Println("Buzz")
} else {
fmt.Println(i)
}
}
}
- 建立一个 Go 程序打印下面的内容(到 100 个字符):
A
AA
AAA
AAAA
AAAAA
AAAAAA
AAAAAAA
package main
import "fmt"
func main() {
for i := 0; i < 100; i++ {
for j := 0; j < i; j++ {
fmt.Print("A")
}
fmt.Print("
")
}
}
- 建立一个程序统计字符串里的字符数量: asSASA ddd dsjkdsjs dk 同时输出这个字符串的字节数
提示: 看看 unicode/utf8 包
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "asSASA ddd dsjkdsjs dk汉子"
fmt.Println("字节数(长度)", len(str), "字符数", len([]rune(str)), "字符数", utf8.RuneCount([]byte(str)))
}
- 扩展/修改上一个问题的程序,替换位置 4 开始的三个字符为 “abc”
package main
import (
"fmt"
"strings"
)
func main() {
str := "asSASA ddd dsjkdsjs dk"
str2 := strings.Replace(str, str[3:6], "abc", 1)
fmt.Println(str, str2)
}
- 编写一个 Go 程序可以逆转字符串,例如 “foobar” 被打印成 “raboof”
package main
import (
"fmt"
)
func main() {
str := "Forbar中文"
r := []rune(str)
// for i := len([]rune(str)) - 1; i > -1; i-- {
// fmt.Print(string(str[i]))
// }
for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
fmt.Println(string(r))
}
- 编写计算一个类型是 float64 的 slice 的平均值的代码。
package main
import (
"fmt"
)
func main() {
arr := []float64{0.1, 0.8, 1.2, 9.8, 8.7, 12.1, 9.8}
fmt.Println(arr)
var s float64
s = 0.0
for _, num := range arr {
s += num
}
fmt.Println("总合", s, "平均值", s/float64(len(arr)))
}