Go 语言入门指南(1):基础语法和常用特性解析| 青训营

67 阅读3分钟

一.go语言简介

go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

go语言非常简练,能用较少的代码实现复杂的功能。

1.go语言的特点

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

正是因为这些特点,go语言正被广泛使用于很多场所。

2.基础结构

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

3.基础语法

一.变量

var声明

  • Go语言中的非全局变量声明后必须使用

var s1 string = "abcstring"
fmt.Println(s1)

1.全局变量

//变量声明
var s string

2.批量声明

//批量声明
var (
	age int
	name string
	status bool
        )

将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。

3.短变量声明

短变量声明 只能在函数中使用

num := 10
fmt.Println(num)

4.匿名变量

多重赋值下,如果要忽略某个值,可以使用匿名变量(anonymous variable)接收。 用 _ 表示

二.IF语句

go与其他语言的if-else语句语法相似

1.基本结构

   if 表达式1 
      { 分支1 } 
   else if 表达式2 
      { 分支2 } 
   else
      { 分支3 }

2.条件选择举例

    package main
    import "fmt"
    var age = 11
    func main() {
      if age>18 {
          fmt.Println("成年")
      } else if age==18 {
         fmt.Println("18岁")
      } else {
         fmt.Println("未成年")
      }
    }

三.For语句

GO语言中没有while循环,只有for循环!!!

1.基础结构

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

2.无限for循环

for循环可以通过break、goto、return、panic语句强制退出循环。

3.键值循环

Go语言中可以使用for range遍历数组、切片、字符串、map 及通道(channel)。
数组、切片、字符串返回索引和值。
map返回键和值。
通道(channel)只返回通道内的值。

package main
import "fmt"
var s = "Hello"
func main() {
	for i,v := range s{
		fmt.Println(i,v)
	}
}

四.SWITCH语句

一个switch只能有一个default分支。
一个分支可以有多个值,多个case值中间使用英文逗号分隔。
分支还可以使用表达式,这时候switch语句后面不需要再跟判断变量。
fallthrough语法可以执行满足条件的case的下一个case。 break,continue用法与Java语言相同

1.基础结构

	switch f {
	case 1:
		语句1
	case 2:
		语句2
	case 3:
		...
	default:
		...
	}

2.代码举例

func main() {
	f := 3
	switch f {
	case 1:
		fmt.Println("1")
	case 2:
		fmt.Println("2")
	case 3:
		fmt.Println("3")
	default:
		fmt.Println("ERROR")
	}
}

五.数组

数组的定义及使用

数组定义与其他语言类似

1.声明数组:var list [6]int

   func  main() {
	//声明数组
	var list [6]int
	//给数组赋值
	for i := 0; i < 6; i++ {
		fmt.Println("请输入数字")
		fmt.Scan(&list[i])//输入
	}
	for i := 0; i < len(list); i ++{
		fmt.Println(list[i])//输出
  }
 }

2.声明并初始化数组:var list = [5]int{1,2,3,4,5}

func  main() {
	//声明数组
	var list = [5]int{1,2,3,4,5}
	for num := range list{
		fmt.Println(num)
	}
}

3.只初始化数组中的个别元素:var list = […]int{1:4, 6:49}

func  main() {
	//声明数组
	var list = [...]int{1:4, 6:49}
	for num := range list{
		fmt.Println(list[num])
	}
}

4.声明二维数组: var list [3][2] int

//声明并且初始化二维数组
func  main() {
	//声明数组
     var list = [2][2]int{
		 {1,2},
		 {3,4},
	}
	for i := 0; i < 2; i++{
		for j := 0; j < 2; j++{
			fmt.Println(list[i][j])
		}
	}
}

同时,数组也可以作为参数传递到函数中