当前位置: 代码迷 >> 综合 >> go学习———第一阶段
  详细解决方案

go学习———第一阶段

热度:58   发布时间:2023-12-06 08:53:20.0

go 语言学习第一阶段

  • 一、go初步学习
    • 1. 基础类型
      • 变量初始化
      • 变量赋值
      • 常量赋值
      • iota枚举
      • 输入
    • 2. 流程控制
      • 循环语句(range)
  • 二、第一阶段考核题

一、go初步学习

1. 基础类型

变量初始化

    var v1 int = 10  // 方式1var v2 = 10       // 方式2,编译器自动推导出v2的类型v3 := 10           // 方式3,编译器自动推导出v3的类型//出现在 := 左侧的变量不应该是已经被声明过,:=定义时必须初始化var v4 intv4 := 2 //err

变量赋值

    var v1 intv1 = 123var v2, v3, v4 intv2, v3, v4 = 1, 2, 3    //多重赋值i := 10j := 20i, j = j, i    //多重赋值

常量赋值

const pi float64 = 3.14const a = 7const a,b,c int = 6,7,8const(a int = 7b   =  8
)const(a=1bc
)//a,b,c=1

iota枚举

 const (a       = iota //a=0b       = "B"c       = iota             //c=2d, e, f = iota, iota, iota //d=3,e=3,f=3g       = iota             //g = 4)

输入

var n int
fmt.Print("请输入一个数:")//是一个友情提示,可有可无
fmt.Scan(&n)//将输入的值赋给n
//fmt.Scan("%d",&n) 也可以用这种方式

2. 流程控制

循环语句(range)

关键字 range 会返回两个值,第一个返回值是元素的数组下标,第二个返回值是元素的值:

 s := "abc"for i := range s {
     //支持 string/array/slice/map。fmt.Printf("%c\n", s[i])}for _, c := range s {
     // 忽略 indexfmt.Printf("%c\n", c)}for i, c := range s {
    fmt.Printf("%d, %c\n", i, c)}

二、第一阶段考核题

1. 输入一个三位整数,求出该数每个位上的数字之和。如123,每个位上的数字之和就是1+2+3=6。

package mainimport ("fmt"
)func main() {
    var n, a, b, c intfmt.Println("请输入一个数:")fmt.Scan(&n)a = n / 100b = n % 100 / 10c = n % 10sum := a + b + cfmt.Print(sum)
}

2. 输入小明的分数(0 ~ 100),并判断并输出小明的学习成绩(0~59 为 D,6079为C,8089为B,90~100为A)

package mainimport ("fmt"
)func main() {
    var score intfmt.Print("请输入分数score:")fmt.Scan(&score)// switch 语句// 当想要使用条件表达式(case后面)的时候,switch后面不可以写东西了// 如果switch后面写了东西,那么就是用写的东西去匹配case后面的值了// func main() {
    // s := 100// switch s {
    // case 1:// fmt.Println("0")// case 100:// fmt.Println("s=100")// }switch {
    case score >= 90:fmt.Print("A")case score >= 80:fmt.Print("B")case score >= 60:fmt.Print("C")case score >= 0:fmt.Print("D")}
}

3. 输入一个整数 n 输出从1到n的阶乘。即 1! + 2! + 3! +…+n!

package mainimport ("fmt"
)func main() {
    // var (// n int// j int = 1// sum int = 0// )var n intj := 1sum := 0fmt.Print("请输入一个整数n:")fmt.Scan(&n)for i := 1; i <= n; i++ {
    j = j * isum += j} //大括号后面写的东西都要另起一行fmt.Printf("1!+2!+3!+...+%d!=%d", n, sum)
}

4. Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。输入一个 n 输出 Fn ,如输入n = 3,则输出 Fn=2

package mainimport ("fmt"
)func main() {
    var n, a, b, c inta, b, c = 1, 1, 0fmt.Print("请输入一个正整数n:")fmt.Scan(&n)for i := 1; i <= n-2; i++ {
    c = a + ba = bb = c}fmt.Printf("F%d=%d", n, c)
}
//用递归函数求
package mainimport ("fmt"
)
func D(i int) int {
    if i == 1 || i == 2 {
    return i - 1}return D(i-1) + D(i-2)
}
func main(){
    fmt.Printf("请输入一个正整数:")fmt.Scan(&h)result := D(h)fmt.Printf("result=%d\n", result)
}

5. 打印图形:输入一个整数n,n为菱形的边长,打印出该菱形

  * * * * * * 
* * * * * * * * * * 
package mainimport ("fmt"
)func main() {
    var n intfmt.Print("请输入一个数n:")fmt.Scan(&n)for i := 1; i <= n; i++ {
    for j := 1; j <= n-i; j++ {
    fmt.Print(" ")}for s := 1; s <= i; s++ {
    fmt.Print("* ")}fmt.Println()}for i := n - 1; i > 0; i-- {
    for j := n - 1; j >= i; j-- {
    fmt.Print(" ")}for s := n - 1; s >= n-i; s-- {
    fmt.Print("* ")}fmt.Println()}
}