一、go初步学习
1. 基础类型
变量初始化
var v1 int = 10 // 方式1
var v2 = 10 // 方式2,编译器自动推导出v2的类型
v3 := 10 // 方式3,编译器自动推导出v3的类型
//出现在 := 左侧的变量不应该是已经被声明过,:=定义时必须初始化
var v4 int
v4 := 2 //err
变量赋值
var v1 int
v1 = 123
var v2, v3, v4 int
v2, v3, v4 = 1, 2, 3 //多重赋值
i := 10
j := 20
i, j = j, i //多重赋值
常量赋值
const pi float64 = 3.14
const a = 7
const a,b,c int = 6,7,8
const(
a int = 7
b = 8
)
const(
a=1
b
c
)//a,b,c=1
iota枚举
const (
a = iota //a=0
b = "B"
c = iota //c=2
d, e, f = iota, iota, iota //d=3,e=3,f=3
g = 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 { // 忽略 index
fmt.Printf("%c\n", c)
}
for i, c := range s {
fmt.Printf("%d, %c\n", i, c)
}
二、第一阶段考核题
1. 输入一个三位整数,求出该数每个位上的数字之和。如123,每个位上的数字之和就是1+2+3=6。
package main
import (
"fmt"
)
func main() {
var n, a, b, c int
fmt.Println("请输入一个数:")
fmt.Scan(&n)
a = n / 100
b = n % 100 / 10
c = n % 10
sum := a + b + c
fmt.Print(sum)
}
2. 输入小明的分数(0 ~ 100),并判断并输出小明的学习成绩(0~59 为 D,6079为C,8089为B,90~100为A)
package main
import (
"fmt"
)
func main() {
var score int
fmt.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 main
import (
"fmt"
)
func main() {
// var (
// n int
// j int = 1
// sum int = 0
// )
var n int
j := 1
sum := 0
fmt.Print("请输入一个整数n:")
fmt.Scan(&n)
for i := 1; i <= n; i++ {
j = j * i
sum += 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 main
import (
"fmt"
)
func main() {
var n, a, b, c int
a, b, c = 1, 1, 0
fmt.Print("请输入一个正整数n:")
fmt.Scan(&n)
for i := 1; i <= n-2; i++ {
c = a + b
a = b
b = c
}
fmt.Printf("F%d=%d", n, c)
}
//用递归函数求
package main
import (
"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 main
import (
"fmt"
)
func main() {
var n int
fmt.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()
}
}