Go 语言 在线

2145Go 语言数组

我也来一个杨辉三角:

package main
import "fmt"

func triangle(n int) {
    var item  []int 
    for i:=1;i<=n;i++ {
        item_len:=len(item)
        if item_len==0 {
            item = append(item,1)
        } else {
            temp_s := []int{1}
            for j:=0;j<item_len-1;j++ {
                    temp_s=append(temp_s,item[j]+item[j+1])
            }
            temp_s=append(temp_s,1)
            item = temp_s
        }
        fmt.Println(item)
    }
}


func main(){  
    triangle(13)
}

2144Go 语言数组

使用数组来打印杨辉三角

根据上一行的内容,来获取下一行的内容并打印出来。

package main
import "fmt"
func GetYangHuiTriangleNextLine(inArr []int) []int {
    var out []int
    var i int
    arrLen := len(inArr)
    out = append(out, 1)
    if 0 == arrLen {
        return out
    }
    for i = 0; i < arrLen-1; i++ {
        out = append(out, inArr[i]+inArr[i+1])
    }
    out = append(out, 1)
    return out
}
func main() {
    nums := []int{}
    var i int
    for i = 0; i < 10; i++ {
        nums = GetYangHuiTriangleNextLine(nums)
        fmt.Println(nums)
    }
}

输出结果为:

[1]
[1 1]
[1 2 1]
[1 3 3 1]
[1 4 6 4 1]
[1 5 10 10 5 1]
[1 6 15 20 15 6 1]
[1 7 21 35 35 21 7 1]
[1 8 28 56 70 56 28 8 1]
[1 9 36 84 126 126 84 36 9 1]

2143Go 语言变量作用域

package main

import "fmt"

func main(){
  var a int = 0
  fmt.Println("for start")
  for a:=0; a < 10; a++ {
    fmt.Println(a)
  }
  fmt.Println("for end")

  fmt.Println(a)
}

输出为:

for start
0
1
2
3
4
5
6
7
8
9
for end
0

在 for 循环的 initialize(a:=0) 中,此时 initialize 中的 a 与外层的 a 不是同一个变量,initialize 中的 a 为 for 循环中的局部变量,因此在执行完 for 循环后,输出 a 的值仍然为 0。

package mainimport "fmt"func main(){ var a int = 0 fmt.Println("for start") for a = 0; a < 10; a++ { fmt.Println(a) } fmt.Println("for end") fmt.Println(a)}

输出为:

for start
0
1
2
3
4
5
6
7
8
9
for end
10

此时 initialize 中的 a 便于外层的 a 为同一个变量,因此在执行完 for 循环后,输出 a 的值为 10。

所以大伙们在使用 for 循环的时候千万要注意呀。。。

2142Go 语言变量作用域

形参使用,比较 sum 函数中的 a 和 main 函数中的 a,sum 函数中虽然加了 1,但是 main 中还是原值 10:

package main

import "fmt"

/* 声明全局变量 */
var a int = 20

func main() {
    /* main 函数中声明局部变量 */
    var a int = 10
    var b int = 20
    var c int = 0

    fmt.Printf("main()函数中 a = %d\n", a)
    c = sum(a, b)
    fmt.Printf("main()函数中 a = %d\n", a)
    fmt.Printf("main()函数中 c = %d\n", c)
}

/* 函数定义-两数相加 */
func sum(a, b int) int {
    a = a + 1
    fmt.Printf("sum() 函数中 a = %d\n", a)
    fmt.Printf("sum() 函数中 b = %d\n", b)
    return a + b
}

输出为:

main()函数中 a = 10
sum() 函数中 a = 11
sum() 函数中 b = 20
main()函数中 a = 10
main()函数中 c = 31

2141Go 语言函数

菱形

package main

import "fmt"

func main() {
    // 长
    x := 9
    // 宽
    y := 9
    // 行数
    row := 1
    for row <= y {
        // 计算每行得星星数
        count := 0
        if row <= (y/2 + 1) {
            count = (2 * row - 1)
        } else {
            count = 2 * (y - row) + 1 
        }
        row++
        text := ""
        // 算出显示星星的范围
        star_min := ((x - count) / 2) + 1
        star_max := ((x - count) / 2) + count
        for index := 1;index <= x;index++ {
            if index >= star_min && index <= star_max {
                text += "*"
            } else {
                text += " "
            }
        } 
        fmt.Println(text)
    }
}

计算结果:

    *    
   ***   
  *****  
 ******* 
*********
 ******* 
  *****  
   ***   
    *