Golang语言练习

习题: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)))
}
原文地址:https://www.cnblogs.com/superhin/p/15264965.html