Go语言学习指南

简述Go语言的特点

  1. 高性能、高并发
  2. 语法简单、学习曲线平缓
  3. 丰富的标准库
  4. 完善的工具链
  5. 静态链接
  6. 快速编译
  7. 跨平台
  8. 垃圾回收机制

Go语言与C语言有些许类似,但比C语言简单很多

Go环境配置

点击下载与自己系统对应的安装包,不同系统安装方式不同,本次采用Windows系统,傻瓜式安装即可

安装之后打开命令窗口,查看是否安装成功。在命令行中输入下面的命令

go version
go version go1.20.6 windows/amd64  // 显示该行内容即安装完成

开发工具

使用GoLand(收费)或者vsCode(免费),在此我使用GoLand进行演示

HelloWorld

入门必敲不用我多说了吧,老规矩,先来一个helloworld压压惊,使用GoLand创建一个项目,新建一个main.go文件,内容如下

package main  
  
import "fmt"  
  
func main() {  
fmt.Println("hello, world!")  
}

运行程序,这一步过后,恭喜你,已经成功入门了

Go语言基础语法

行分隔符

在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。以下为两个语句:

fmt.Println("Hello, World!")  
fmt.Println("你好,世界")

关键字

下面列举了 Go 代码中会使用到的 25 个关键字保留字

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:

appendboolbytecapclosecomplexcomplex64complex128uint16
copyfalsefloat32float64imagintint8int16uint32
int32int64iotalenmakenewnilpanicuint64
printprintlnrealrecoverstringtrueuintuint8uintptr

Go 语言变量

Go 语言变量名由字母数字下划线组成,其中首个字符不能为数字。

var 变量名(会自动识别输入值的类型)

var a = 20
var e float64
f := 123

可以一次声明多个变量:

var b, c int = 1, 2

const 常量名(通过上下文自动确定类型)

const a = "abcde"
const b = "asdfgh"

Go 语言条件语句

if else

If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则执行 else 语句块。

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

Go 语言 if 语句嵌套

package main  
  
import "fmt"  
  
func main() {  
   /* 定义局部变量 */  
   var a int = 100  
   var b int = 200  
   
   /* 判断条件 */  
   if a == 100 {  
       /* if 条件语句为 true 执行 */  
       if b == 200 {  
          /* if 条件语句为 true 执行 */  
          fmt.Printf("a 的值为 100 , b 的值为 200\n" );  
       }  
   }  
   fmt.Printf("a 值为 : %d\n", a );  
   fmt.Printf("b 值为 : %d\n", b );  
}

Go 语言 switch 语句

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。

switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。

switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面case,可以使用 fallthrough

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}
package main  
  
import "fmt"  
  
func main() {  
   /* 定义局部变量 */  
   var grade string = "B"  
   var marks int = 90  
  
   switch marks {  
      case 90: grade = "A"  
      case 80: grade = "B"  
      case 50,60,70 : grade = "C"  
      default: grade = "D"    
   }  
  
   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" );  
   }  
   fmt.Printf("你的等级是 %s\n", grade );        
}

Go 语言 select 语句

select 是 Go 中的一个控制结构,类似于 switch 语句。

select 语句只能用于通道操作,每个 case 必须是一个通道操作,要么是发送要么是接收。

select 语句会监听所有指定的通道上的操作,一旦其中一个通道准备好就会执行相应的代码块。

如果多个通道都准备好,那么 select 语句会随机选择一个通道执行。如果所有通道都没有准备好,那么执行 default 块中的代码。

package main  
  
import (  
    "fmt"  
    "time"  
)  
  
func main() {  
  
    c1 := make(chan string)  
    c2 := make(chan string)  
  
    go func() {  
        time.Sleep(1 * time.Second)  
        c1 <- "one"  
    }()  
    go func() {  
        time.Sleep(2 * time.Second)  
        c2 <- "two"  
    }()  
  
    for i := 0; i < 2; i++ {  
        select {  
        case msg1 := <-c1:  
            fmt.Println("received", msg1)  
        case msg2 := <-c2:  
            fmt.Println("received", msg2)  
        }  
    }  
}

Go 语言循环语句

在这里插入图片描述

值得一提的是,在Go语言中,只有for循环一种循环语句

package main  
import "fmt"  
  
func main() {  
   //死循环
   for {  
      fmt.Println("666")  
   }  
   
   for i := 1; i <= 10; i++ {
       fmt.Println("Hi")
   }
   
   strs := []string{"one", "two"}
   for i, str := range strs {
       fmt.Println(i, str)
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值