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()}
}