基础[1]

  1. 创建一个基于 for 的简单的循环。使其循环 10 次,并且使用 fmt 包打印出计数器的值。
import "fmt"
//这里使用最简单的for循环
for i := 0; i< 10; i++ {
        fmt.Print(i)
    }
  1. 用 goto 改写 1 的循环。保留字 for 不可使用。
import fmt

i := 0
    this: //跳转到这里
        fmt.Print(i)
        i ++
        if i < 10 {
            goto this
        }
  1. 再次改写这个循环, 使其遍历一个 array, 并将这个 array 打印到屏幕上。
import fmt

var arr = []int {0,1,2,3,4,5}
    //使用range来遍历一个数组
    for _, item := range arr {
        fmt.Print(item)
    }
  1. 编写一个程序,打印从 1 到 100 的数字。当是三个倍数就打印 “Fizz” 代替数字,当是五的倍数就打印 “Buzz”。当数字同时是三和五的倍数时,打印 “FizzBuzz”。
import fmt

for i := 1; i <= 100; i++ {
        //没有表达式的switch默认判定的是true/false
        switch {
        case i%3 ==0:
            fmt.Print("Fizz")
        case i%5 == 0:
            fmt.Print("Buzz")
        case i%3  == 0 && i%5 == 0:
            fmt.Print("FizzBuzz")
        default:
            fmt.Print(i)
        }
    }
  1. 建立一个 Go 程序打印下面的内容(到 100 个字符):

A

AA

AAA

AAAA

AAAAA

AAAAAA

AAAAAAA

import fmt
//使用了两个for循环
for i := 1; i <=100; i++ {
        for j := 1; j < i; j ++ {
            fmt.Print("A")
        }
        fmt.Println()
    }

另一个版本:

import "fmt"

func main() {

    str := "A" 
    for i := 0; i < 100; i++ {
        //每次打印一个字符后和自己叠加起来
        fmt.Printf("%s\n", str)

        str = str + str
    }

}
  1. 建立一个程序统计字符串里的字符数量:

    asSASA ddd dsjkdsjs dk

    同时输出这个字符串的字节数。

import unicode/utf8    
str := "asSASA ddd dsjkdsjs dk"
//字符串的字符数量
fmt.Println(len([]byte(str)))
//字节数
fmt.Print(utf8.RuneCount([]byte(str)))
  1. 扩展上一个问题的程序,替换位置 4 开始的三个字符为 “abc”。
import fmt    
str := "asSASA ddd dsjkdsjs dk"
r := []rune(str)
//使用复制函数把abc复制到指定位置
copy(r[4:4+3], []rune("abc"))

fmt.Printf("before: %s\n", str)
fmt.Printf("after: %s\n", string(r))
  1. 编写一个 Go 程序可以逆转字符串,例如 “foobar” 被打印成 “raboof”。
import fmt

str := "foobar"
//转换成byte类型数组
a := []byte(str)
// 这里的话,i赋值为0,j赋值为len(a) -1 的长度
for i, j := 0, len(a) - 1; i < j; i, j = i + 1, j - 1 {
    a[i], a[j] = a[j], a[i]
}

fmt.Print(string(a))
  1. 编写计算一个类型是 float64 的 slice 的平均值的代码。
import fmt
xe := []int{1, 18, 33, 5, 6, 2, 7, 5, 8, 99}
sum := 0.0
    avg := 0.0
    switch len(xe) {
    case 0:
        avg = 0.0
    default:
        for _, v := range xe {
            //累加
            sum = sum + float64(v)
        }
        avg = sum / float64(len(xe))
    }

    fmt.Print(avg)

书本链接learning go

下一章是函数ヽ( ̄▽ ̄)و


  1. 题图出处 ↩︎