Go基础 | 青训营笔记

72 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

0 环境配置

0.1 文件下载

访问 Downloads - The Go Programming Language 或者 Downloads - The Go Programming Language (google.cn) 下载对应平台的安装文件

0.2 Windows

默认直接安装

0.3 Linux

解压下载文件

tar -zxvf https://dl.google.com/go/go1.19.5.linux-amd64.tar.gz -C /usr/local  # 解压文件

编辑 /etc/profile 文件

vim /etc/profile #编辑配置文件

添加:

#go envrionment
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

重新加载

source /etc/profile

0.4 配置代理

打开你的终端并执行

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

1. Hello Go!

1.1 Hello World!

package main

import "fmt"

func main() {
    fmt.Println("Hello, World")
}

2. 变量

2.1 变量声明

var identifier type  // 声明单个变量
var identifier1, identifier2 type  // 声明多个变量
var (  // 
    identifier1 type
    identifier2 type
)

2.2 变量的初始化

var i int = 10
var i = 10  // 缩写
i := 10  // 海象运算符

注1:一些未初始化的值类型变量,Go 通常会自动赋值默认值, 例如:

var i int  // i == 0
var s string  // s == ""
var b bool  // b == false

注2:变量声明后未使用,编译器会报错

3. 语句

3.1 if

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
} else {
  /* 在布尔表达式为 false 时执行 */
}

例如:

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

3.2 for

for init; condition; post { }  //c、c++: for(init; condition; post)
for condition { }  // c、c++: for(; condition; )
for { }  // c、c++: for(;;)

// python: for i in iterator
// c、c++: for(auto i : iterator)
for index, value := range iterator { }

例如:

package main  
  
import "fmt"  
  
func main() {  
   sum := 0  
   for i := 0; i <= 10; i++ {  
	   sum += i  
   }  
   fmt.Println(sum)
   
   
   sum = 0
   for sum <= 10 {
	   sum += 1  // sum++
   }
   fmt.Println(sum)
   
   
   sum = 0
   for {
	   if sum <= 10 {
		   continue
	   } else {
		   break
	   }
	   sum++
   }
	fmt.Println(sum)
	
	
	s := "abcde"
	for _, c := range s {
		fmt.Println(c)
	}
}

4. 函数

4.1 函数声明

func function_name([parameter list]) (return_types) {
   code
}

函数定义解析:

  • func:函数由 func 开始声明
  • function_name:函数名称,参数列表和返回值类型构成了函数签名。
  • parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
  • return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
  • code:函数定义的代码集合。

例如:

func max(num1, num2 int) int {  // 单个返回值
   var result int  
  
   if (num1 > num2) {  
      result = num1  
   } else {  
      result = num2  
   }  
   return result  
}

func swap(x, y string) (string, string) {  // 多个返回值
   return y, x  
}

4.2 lambda

f := fanc(a, b int) int {
	return a + b
}
``