• Go:条件语句、循环语句


    一、条件语句

    package main
    
    import (
    	"fmt"
    	"io/ioutil"
    )
    
    // if的条件不需要括号
    
    func xx(i int) int {
    	if i == 1 {
    		return 1
    	} else if i == 2{
    		return 2
    	} else {
    		return 0
    	}
    }
    
    func eval(a, b int, operator string) int {
    	var result int
    	switch operator {
    	case "+":
    		result = a + b
    	case "-":
    		result = a - b
    	case "*":
    		result = a * b
    	case "/":
    		result = a / b
    	default:
    		// panic相当于报错
    		panic("unsupported operator:" + operator)
    	}
    	return result
    }
    
    func getGrade(score int) string {
    	grade := ""
    	// switch后面可以没有表达式,在case中实现即可
    	switch {
    	case score == 100:
    		grade = "A+"
    	case score >= 90 && score< 100:
    		grade = "A"
    	case score >= 80 && score< 90:
    		grade = "B"
    	}
    	return grade
    }
    
    func main() {
    	fmt.Println(xx(10)) // 0
    
    	const filename = "test.txt"
    	if contents, err := ioutil.ReadFile(filename); err != nil {
    		fmt.Println(err)
    	} else {
    		fmt.Printf("%s
    ", contents)
    		/*
    		千山鸟飞绝,万径人踪灭。
    		孤舟蓑笠翁,独钓寒江雪。
    		*/
    	}
    
    	fmt.Println(eval(10, 20, "+")) // 30
    
    	fmt.Println(getGrade(95)) // A
    }
    

    二、循环语句

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"os"
    	"strconv"
    )
    
    // for的条件不需要括号
    // for的条件可以省略初始条件、结束条件、递增表达式
    
    func convertToBinary(i int) string {
    	result := ""
    	for ; i > 0; i /= 2 {
    		tmp := i % 2
    		result = result + strconv.Itoa(tmp)
    	}
    	return result
    }
    
    func printFileContent(filename string) {
    	file, err := os.Open(filename)
    	if err != nil {
    		panic(err)
    	}
    	scanner := bufio.NewScanner(file)
    	// 只有结束条件
    	for scanner.Scan() {
    		fmt.Println(scanner.Text())
    	}
    }
    
    func foreverCircle() {
    	// 死循环
    	for {
    		fmt.Println("1")
    	}
    }
    
    func printStr1(s string) {
    	for index, value := range s {
    		fmt.Printf("index:%d value:%c
    ", index, value)
    		/*
    		index:0 value:H
    		index:1 value:e
    		index:2 value:l
    		index:3 value:l
    		index:4 value:o
    		index:5 value:
    		index:6 value:W
    		index:7 value:o
    		index:8 value:r
    		index:9 value:l
    		index:10 value:d
    		*/
    	}
    }
    
    func printStr2(s string) {
    	for index, value := range s {
    		if index < 5 {
    			fmt.Printf("index:%d value:%c
    ", index, value)
    			/*
    			index:0 value:H
    			index:1 value:e
    			index:2 value:l
    			index:3 value:l
    			index:4 value:o
    			*/
    			continue
    		} else if index == 5 {
    			break
    		}
    	}
    }
    
    func main() {
    	fmt.Println("1")
    	fmt.Println(
    		convertToBinary(1),  // 1
    		convertToBinary(2),  // 01
    		convertToBinary(5),  // 101
    		convertToBinary(10), // 0101
    	)
    
    	printFileContent("test.txt")
    	/*
    	千山鸟飞绝,万径人踪灭。
    	孤舟蓑笠翁,独钓寒江雪。
    	*/
    
    	//foreverCircle()
    
    	printStr1("Hello World")
    
    	printStr2("Hello World")
    }

    三、goto语句(不推荐使用)

    package main
    
    import "fmt"
    
    func func1() {
    	LABEL:
    		for i := 0; i <= 5; i++ {
    			for j := 0; j <= 5; j++ {
    				if j == 4 {
    					continue LABEL // LABEL相当于标志,程序跳到此处执行
    				}
    				fmt.Printf("i is: %d, and j is: %d
    ", i, j)
    			}
    		}
    }
    
    func func2() { // 相当于for循环
    	i := 0
    	LABEL:
    		fmt.Println(i)
    		i++
    		if i == 5 {
    			return
    		}
    		goto LABEL
    }
    
    func main() {
    	func1()
    	func2()
    }
    
  • 相关阅读:
    初中生数学题
    防御准备
    约数个数和「SDOI2015」
    暑期集训题目
    【模板】可持久化线段树 1(主席树)
    【模板】可持久化数组(可持久化线段树/平衡树)
    权值线段树&&线段树合并
    回家的路「SHOI 2012」
    Function「ZJOI2009」
    主席树-可持久化线段树学习笔记
  • 原文地址:https://www.cnblogs.com/believepd/p/10850848.html
Copyright © 2020-2023  润新知