GO语言相关基础 | 青训营笔记

84 阅读4分钟

走进Golang基础语言 5.13

课程视频链接:走进 Go 语言基础语言 - 掘金 (juejin.cn)

课程适用于已经对go有了解的观看,没摸过的还是乖乖去看看基础语法再看课程了,总体的速度很快

课程源码:github.com/wangkechun/… 短链接:hi-hi.cn/go

总结特点:去了一些大括号、只有一种循环for、不需要使用第三方库

 // 声明main包,表明当前是一个可执行程序
 package main  
 //导入内置fmt
 import "fmt"
 //main函数,是程序的执行的入口
 func main(){
     //在终端打印hello world
     fmt.Println("hello world")
 }

代码结构

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释

配置go环境就下载好SDK装一下,完了配置一下就可,编译器再下载点相关的插件

语法基础

基础语法参考:Go 语言基础语法 | 菜鸟教程 (runoob.com)

GO语言和Python的格式差不多,省去了大部分的括号和链接符号,例如(){} ;

从视觉上更加的简洁了,但是语言的格式也更严格了,所以还是需要按照代码格式进行编写,省的错那的不知道

刚触碰GO,还以为会和java一样编译运行就出结果,刚开始运行go还是有点麻烦的,建议观看尚硅谷的go基础课,从编译器开始一步一步进入go的编写

格式化字符串

Go 语言中使用 fmt.Sprintffmt.Printf 格式化字符串并赋值给新串:

  • Sprintf 根据格式化参数生成格式化的字符串并返回该字符串。类似将字符串进行了拼接
  • Printf 根据格式化参数生成格式化的字符串并写入标准输出。和java的printf功能类似
  *// %d 表示整型数字,%s 表示字符串*
   var stockcode=123
   var enddate="2020-12-31"
   var url="Code=%d&endDate=%s"
   var target_url=fmt.Sprintf(url,stockcode,enddate)
   fmt.Println(target_url)
 ​
 输出:Code=123&endDate=2020-12-31
  // %d 表示整型数字,%s 表示字符串
     var stockcode=123
     var enddate="2020-12-31"
     var url="Code=%d&endDate=%s"
     fmt.Printf(url,stockcode,enddate)
 ​
 输出:Code=123&endDate=2020-12-31

for

go中的循环只有for一种循环方式

  sum := 0
       for i := 0; i <= 10; i++ {
          sum += i
       }
    fmt.Println(sum)

输出的结果是 55

说实话,多少还是有点难接受,省略的实在太多了

 func main() {
    sum := 1
    for ; sum <= 10; {
       sum += sum
    }
    fmt.Println(sum)
 ​
    // 这样写也可以,更像 While 语句形式
    for sum <= 10{
       sum += sum
    }
    fmt.Println(sum)

结果:16 /n 16

说真的和java的变化还是有点大的

if

if就没什么好说的了,直接上案例

 /* 定义局部变量 */
    var a int = 10
  
    /* 使用 if 语句判断布尔表达式 */
    if a < 20 {
        /* 如果条件为 true 则执行以下语句 */
        fmt.Printf("a 小于 20\n" )
    }
    fmt.Printf("a 的值为 : %d\n", a)
 if 布尔表达式 {
    /* 在布尔表达式为 true 时执行 */
 } else {
   /* 在布尔表达式为 false 时执行 */
 }

switch

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。

您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

  switch {
       case grade == "A" :
          fmt.Printf("优秀!\n" )    
       case grade == "B", grade == "C" :
          fmt.Printf("良好\n" )      
       case grade == "D" :
          fmt.Printf("及格\n" )      
       case grade == "F":
          fmt.Printf("不及格\n" )
       default:
          fmt.Printf("差\n" );
    }
 switch var1 {
     case val1:
         ...
     case val2:
         ...
     default:
         ...
 }

var可以是任何的类型,与java 的相比就智能很多了,但是也麻烦很多

数组

数组和java的差不多,但是用的不多,go用的多的是切片

 var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
 balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

var会自己对变量进行类型的选择,:=和var 的赋值类似,但是用:=赋值的变量将不能随意改变变量值

指针

是的你没有看错,竟然搞了个指针,c++的看家本领给用了起来

用法和c++的差不了一点

 package main
 ​
 import "fmt"
 ​
 func main() {
    var a int = 10  
 ​
    fmt.Printf("变量的地址: %x\n", &a  )
 }

切片

范围

map

好了写多了我下次没得写了,留着点

更多go基础语法看Go 语言切片(Slice) | 菜鸟教程 (runoob.com)真的就够了