Go语言基本语法
# 前言 提示:以下是本篇文章正文内容,下面案例可供参考
一、条件表达式
1.if条件语句的语法
注意:
- if的条件里可以赋值;
- if的条件里赋值的变量作用域就在这个if语句里面
const filename = "abc.txt"
contents,err := ioutil.ReadFile(filename)
if err !=nil{
fmt.Println(err)
} else {
fmt.Printf("%s\n",contents)
}
if条件语句还有一种简介的写法
const filename1 = "abc.txt"
if contents1,err1 := ioutil.ReadFile(filename1) ; err1 != nil {
fmt.Println(err1)
}else{
fmt.Printf("%s\n",contents1)
}
二、switch的语法
注意:
- 与C和Java的区别,不需要break
- switch会自动break,除非使用fallthrough
1.标准写法
func switchDemo(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还有一种写法,switch可以没有表达式
func switchGrade(score int) string {
g := ""
switch{
case score < 0 || score > 100:
//panic的作用就相当于报错一旦有不符合的值就会抛出错误
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"
}
return g
}
func main() {
fmt.Println(
switchGrade(0),
switchGrade(59),
switchGrade(60),
switchGrade(82),
switchGrade(99),
switchGrade(100),
switchGrade(101),
)
}
如果出现不符合的值就会抛出错误:
panic: Wrong score: 101
goroutine 1 [running]:
main.switchGrade(0xd49780)
D:/Goland_demo/20211206.go:62 +0xb4
main.main()
D:/Goland_demo/20211206.go:35 +0x293
Process finished with the exit code 2
三、for循环的语法
1.基本语法
func forDeme(){
sum := 0
for i:= 1; i <=100; i ++{
sum += i
}
}
注意:
- for的条件里面不需要括号
- for的条济南里可以省略初始条件,结束条件,递增表达式
func converTOBin(n int) string {
result := ""
for ; n > 0; n /= 2 {
lsb := n % 2
result = strconv.Itoa(lsb) + result
}
return result
}
注意:
省略初始条件和结束条件,相当于Java的while,go语言没有while
func printFile(filename string){
file , err := os.Open(filename)
if err != nil {
panic(err)
}
scanner := bufio.NewScanner(file)
for scanner.Scan(){
fmt.Println(scanner.Text())
}
}
for循环什么条件都不写,就是一个死循环
func forever() {
for {
fmt.Println("abc")
}
}