Go语言的基本语法,二

  一·if -else

  (1)

package main

import "fmt"

// if - else
//func main(){
//    // 先定义 一个变量
//    var a int=90
//    // if 条件{} 大括号和条件之间不能进行换行
//
//    if a>90{
//        fmt.Println("大于90")
//    }else if a<90{
//        fmt.Println("a 小于90")
//    }else{
//        fmt.Println("a等于90")
//    }
//
//}

  (2)在条件作用域中定义的变量可以 使用 作用域的问题

// 在条件作用域中定义的变量可以 使用 作用域的问题
// 在函数中 进行条件判断
func main(){
    if a:=90;a>90{
        fmt.Println("大于90")
    } else if a<90{
        fmt.Println("小于90")
    }else{
        fmt.Println("等于90")
    }
}

  二. 包的使用

// 包的使用
package main

import "mypackage"
import "fmt"



func main() {

    //想使用mypackage包下的test函数和test1函数
    mypackage.Test1()
    fmt.Println("xxx")

}

使用外部的包必须首字母大写  使用同一包内的函数导入 导入的包必须一致

  三.for 循环

package main

import "fmt"

// for 循序
func main(){
    // 1.for 语法
    //for i:=0;i<10;i++{
    //    fmt.Println(i)
    //}
    // 三部分,都可以省略
    // (1)先省略第一部分 i:0

    //i:=0
    //for ;i<10;i++{
    //    fmt.Println(i)
    // (2)省略第三部分
    //i:=0
    //for ;i<10;{
    //    i++
    //    fmt.Println(i)
    // (3)省略第二部分
//    for ;;{
//        fmt.Println("yyyy") // 死循环 没有哦终止条件 相当于while True
//}
//    for {
//        // 死循环的写法
//        fmt.Println("hjah")
//    }

  (2)break 和continue 的用法

package main

import "fmt"

    // for 循序
func main(){
    // (4) break 和continue
    //for i:=0;i<20;i++{
    //    if i == 5{
    //        // 如果i 等于5 就直接终止种鸽函数
    //        break
    //    }
    //    fmt.Println(i)
    //}
    // continue 的用法
    for i:=0;i<20;i++{
        if i==5{
            continue
        }
        fmt.Println(i) // 0 不等于5 打印 过滤掉5 的值
    }

}

  (3)switch 的基本用法

package main

import "fmt"

// switch的基本语句

func main(){
    // 基本用法
    a:=11
    switch a {
    case 1:
        fmt.Println("我是1")

    case 2:
        fmt.Println("我是2")
    case 10:
        fmt.Println("我是10")
    // 设置以上都不满足 我们default
    default:
        fmt.Println("我是默认值")
    }

  (2)多值匹配

    

package main

import "fmt"

// switch的基本语句

func main(){
    // 基本用法
    a:=12
    switch a {
    case 1,4,5:
        fmt.Println("我是1")

    case 2,6,8:
        fmt.Println("我是2")
    case 10,11,12:
        fmt.Println("我是10,11,12 中的12")
    // 设置以上都不满足 我们default
    default:
        fmt.Println("我是默认值")
    }


}

  (3)无值表达式

unc main(){
        // 基本用法
    
    a:=10
    switch {
    case a>10:
        fmt.Println("大于10")
    case a<10:
    fmt.Println("小于10")
    default:
        fmt.Println("默认值")
    }

  (4)//Fallthrough 的用法:穿透, 无条件的执行下一个case 的内容

package main
import "fmt"
// switch的基本语句
func main(){
// 基本用法
//switch a {
//case 1,4,5:
// fmt.Println("我是1")
//
//case 2,6,8:
// fmt.Println("我是2")
//case 10,11,12:
// fmt.Println("我是10,11,12 中的12")
//// 设置以上都不满足 我们default
//default:
// fmt.Println("我是默认值")
// 无表达式的switch
a :=10
switch a {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
case 10:
fmt.Println("10")
test()
fallthrough
case 12:
fmt.Println("穿透")
}
}
// 外部的函数
func test(){
fmt.Println("穿透1")
}

  (5)数组和迭代及多维数组

package main

import "fmt"

// 数组  值传递(不可变)和值的引用(可变)

func main(){
    // var a [5]int //定义了一a 的数组 长度为5的int类型的数组
    // a[1]=999 // 把索引为1的位置换成100
    // (1)定义并未赋初值
    //var a [5]int
    //fmt.Println(a)  //  [0 0 0 0 0]
    //a[1]=999
    //fmt.Println(a)  // [0 999 0 0 0]

    // (2)定义并切赋初值
    // var b[6]int=[6]int{1,2,3,4,8}  // 长度必须小等于6 不足0补全
    // fmt.Println(b)
    // var b=[6]int{1,2,3}  //  [1 2 3 0 0 0]
    // fmt.Println(b)

    // (3)第67 的位置设置为6767 a[-9]是不支持的哦
    // a:=[100]int{1,2,3,65:6767}
    // fmt.Println(a)

    // (4)数组是值类型 ()>>> 所有的函数传参都是copy 传递
    // a:=[4]int{1,2,3}
    // test1(a)  // 函数加括号执行调用 [100,2,3,0]  将0 的位置1 替换成100
    // fmt.Println(a)  // 打印[1,2,3,0] // 原值是不会发生改变的

    // (5) 数组的长度 内置函数的len
    //a:=[10]int{6,6,7}
    //fmt.Println(len(a))

    // (6)数组的大小是类型的一部分
    // var a [4]int=[4]int{1,2}
    // var b [5]int=[5]int{4,5}

     // fmt.Println(a=b) 没办法进行大小的比较
     // (7)go 中的与(&&) 或(||) 非!
    // a:=10
    // if (a>10||a<6){
    //     fmt.Println("ye")
    //
    // }else if  !(a>10) {
    //     fmt.Println("ok")
    //}

    // (8)数组的迭代
    //a:=[5]int{1,4,5,6,70}
    //for i:=0; i<len(a);i++{
    //    fmt.Println(a[i]) // 获取数字的值 索引取值
    //}

    //  通过range迭代
    //for i,v:=range a{
    //    fmt.Println(i,v)  // i 为索引  v 为值
    //}

    // (9) 多维数组
    var a [5][2]int
    a[0][1]=10
    fmt.Println(a)  // [[0 10] [0 0] [0 0] [0 0] [0 0]]


}

// 外部函数b
func test1(b [4]int){
    b[0]=100
    fmt.Println(b)
}