关于go:golang从入门到入土三分支循环结构

代码地址 能够依据git log查看

package main

import (
    "bufio"
    "fmt"
    "io/ioutil"
    "os"
    "strconv"
    "time"
)

func main() {
    const filenmae = "abc.txt"
    contents, err := ioutil.ReadFile(filenmae)

    // 写法一
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("%s", contents)
    }

    // 写法二 if语句能够写表达式, if语句能够赋值,这里的赋值的作用域只在if语句只内

    if contents, err = ioutil.ReadFile(filenmae); err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("%s\n", contents)
    }

    // fmt.Println(
    //     converToBin(0),
    //     converToBin(2),
    //     converToBin(5),
    // )

    readFileAsLine(filename)
}

// if语句
func bounded(v int) int {
    if v > 100 {
        return 100
    } else if v < 0 {
        return 0
    } else {
        return v
    }
}

// switch 语句
func eval(a, b int, op string) int {
    var result int

    // switch 语句不必加break,默认有break,如果须要不break,就应用fallthrough 让他继续执行
    // switch 前面能够没有表达式,在case里写条件判断
    switch op {
    case "+":
        result = a + b
    case "-":
        result = a - b
    case "*":
        result = a * b
    case "/":
        result = a / b
    default:
        panic("参数谬误")
    }

    switch {
    case a > 0:
        fmt.Println("a")
    case a < 0:
        fmt.Println("b")
    default:
        fmt.Println("c")
    }
    return result
}

// for 语句
/**
 * 将10进制转换成2进制
 * 循环/2 取余 直到商变为9 ,而后倒转
 */
func converToBin(a int) string {
    // for循环没有括号
    // for 循环能够没有出事表达式,没有判断表达式,没有递增表达式
    var result string
    if a == 0 {
        return strconv.Itoa(a)
    }
    for ; a > 0; a /= 2 {
        lsb := a % 2
        result = strconv.Itoa(lsb) + result
    }

    return result
}

var filename string = "abc.txt"

func readFileAsLine(filename string) string {
    file, err := os.Open(filename)

    if err != nil {
        panic(err)
    }

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
        time.Sleep(1 * time.Second)
    }
    return ""
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理