小工具知识网

当前位置: 首页 > 行业知识 > 【Go语言快速上手(二)】 分支与循环&函数讲解

行业知识

【Go语言快速上手(二)】 分支与循环&函数讲解

2026-11-03 12:37:09 来源:互联网转载

博主CSDN主页:杭电码农-NEO

 

⏩专栏分类:Go语言专栏⏪

 

代码仓库:NEO的学习日记

 

关注我带你学习更多Go语言知识

 


Go快速上手

  • 1. 前言
  • 2. 分支与循环
    • 2.1 for循环和for range
    • 2.2 switch语句
    • 3. 函数的引入
    • 4. 包的引入
    • 5. init函数讲解
    • 6. 匿名函数讲解
    • 7. defer关键字讲解
    • 8. 字符串函数讲解
    • 9. 内置函数
    • 10. 总结以及拓展

      1. 前言

      经过第一篇文章的学习,现在我们对GO已经有了一个初步的了解,接下来会站在使用它的角度,给大家讲解一些语法和GO语言的组件

      本章重点:

      本篇文章着重讲解GO语言的分支与循环语句,以及GO语言中的函数的特性,以及函数是怎样定义的?最后会讲解几个特殊的函数,包括init函数,匿名函数,以及defer关键字的用途,字符串函数和日期函数


      2. 分支与循环

      GO语言中的分支循环和C很类似,也是用if,else if,else以及for循环,switch语句来完成任务.比较特别的是,GO语言中没有while循环,但是新增了一个叫for range的东西,后面会一一讲解

      if,else语句

      var age int = 18if age>=18{fmt.Println("可以去网吧")}else{fmt.Println("不能去网吧")}

      GO语言比较特别的是,if语句的判断条件不用加括号,判断条件可直接写.除此之外,GO语言的if,else语句可不是能随意写的,下面这种写法就是错误的

      var age int = 18if age>=18{fmt.Println("可以去网吧")}else{fmt.Println("不能去网吧")}

      2.1 for循环和for range

      代码实例:

      var str string = "abcdefg"for i := 0;ifmt.Println(str[i])}fmt,Printf("下标为: %d,值为: %c",key,value)case 10:fmt.Println("优秀")case 9:fmt.Println("优秀")case 8:fmt.Println("良好")case 7:fmt.Println("良好")case 6:fmt.Println("及格")default:fmt.Println("不及格")}return x+y}func main(){var age int = add(10,20)fmt.Println(age)}return x-y}func main(){function := subvar tmp int = function(20,10)fmt.Println(tmp)}return x+y,x-y}//写法二func mytask(x int,y int) (sum int,sub int){//重命名返回值sum := x+ysub := x-yreturn //不用写特定的变量或值,系统会自动返回sum和sub两个变量}fmt,Println("全局变量被执行")return x+y}func init(){fmt,Println("init函数被执行")}func main(){fmt,Println("main函数被执行")}
      p结论:/p ulli全局变量>init>main函数
    • 其他包的init函数>main包的init函数

      6. 匿名函数讲解

      代码实例:

      func main(){var ret int = func(x int,y int) int{return x+y}(10,20)//最后进行传参fmt.Println(ret)}

      7. defer关键字讲解

      在函数中,程序员经常需要创建资源(比如堆区资源,文件描述符等),为了在函数执行完毕后,能够很好的释放这些资源,GO语言提供了defer关键字

      func add(x int,y int) int{defer fmt.Printf("x的值为: %d",x)defer fmt.Printf("y的值为: %d",y)x += 100y +=50var sum int = x+yfmt.Println(sum)return sum}func main(){var tmp int = add(10,20)fmt.Println(tmp)}

      GO中,语句defer关键字修饰的语句时,不会立刻执行此语句,而是将此语句压入到一个栈中,等整个函数调用结束时再执行栈中的语句,并且,压入栈中的语句的值已经定了,即使在后面修改了值(比如上面代码中的x和y),栈中也不会受影响

      使用场景: 打开文件描述符时,立马用defer写一个关闭文件描述符的语句,就不会遗忘释放资源


      8. 字符串函数讲解

      字符串函数有很多,大家不必全部背下来,有个影响就行,到时候真正要用的时候再查文档即可

      有些字符串函数有两个返回值,第二个往往是err,代表执行这个函数时是否出错,如果你不想接收它,直接用下划线_省略掉即可.注意,字符串函数需要import包:strconv,而strings是内置的包,可以直接使用

      var str string = "abcdefg"r := []rune(str)//将str转换为切片后再使用for i:=0;ifmt.Println(r[i])}pos := strings.lndex("i love cpp,i love golang",'c')

上一篇:明日之后怎么来方舟服务器?

下一篇:创优汇积分获取秘籍大揭秘!