funceval(a, b int, op string)int { // 有返回值的函数,要求需要指定函数的类型 var result int switch op{ case"+": result = a + b case"-": result = a - b case"*": result = a * b case"/": result = a / b default: panic("unsupported operator:" + op) // panic()函数的作用,打印括号内的内容(即报错)并终止程序 } return result }
switch会自动break,除非使用fallthrough
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
funcgrade(score int)string { g := "" switch { // switch之后可以不添加语句也可以执行 case score <0 || score > 100: panic(fmt.Sprintf("Wrong score: %d", score)) case score < 60: g = "F" case score < 80: g = "C" case score < 90: g = "B" case score <= 100: g = "A" } fmt.Println("hello") // 一旦panic()函数执行,就会中断程序的进行,此处的语句也就不会执行 return g }
for 循环的初始条件中创建变量的时候,只能使用推导写法:创建变量,且和if条件判断一样,在条件中创建的变量只能在其内部使用,无法在循环之外使用。
for 的条件里不需要添加括号
for条件里可以省略初始条件,结束条件,递增表达式
1 2 3 4 5 6 7 8 9
// 整数转二进制 funcconvertToBin(n int)string { result := "" for ; n > 0; n /= 2 { lsb := n % 2 result = strconv.Itoa(lsb) + result // strconv.Itoa()作用将参数变成字符串类型 } return result }