Go 语言入门基础语法(1)|青训营

122 阅读3分钟

这两天从零学习了go语言,在学习过程中发现对于零基础选手来说有一些地方没提到(也可能是因为我太弱了),按照自己的学习顺序总结了一下。
首先,我们通过最基本的hello world来了解一下Go语言的程序框架

package main
import (
	"fmt"
)
func main() {
	fmt.Println("Hello world!")
}
  • package main定义一个包名,所有可运行的go包必须包含package main
  • import main后的括号中表示引入的包,导入的包名需要使用双引号包裹,同时需要注意在go语言中左括号不能换行
  • func main进入程序入口,每一个程序中必须有一个main函数
  • 通过使用fmt.Println将文本打印到控制台,这里与Java有些类似

接下来是go语言的一些基本语法:

1. 变量

1.0 定义变量

go语言使用var关键字来声明变量,具体格式如下,在代码中定义了一个int类型变量。

package main

import (
	"fmt"
)
func main() {
  var a int =10//定义一个int类型变量a,赋值为10
}

1.1 未初始化

声明了变量类型,没有初始化,例如var a int,按照下表进行初始化

类型
数值类型0
布尔类型false
字符串""

1.2 未声明变量类型

没有声明变量类型,但是对变量初始值进行了设定,则根据初始值进行变量类型的判断。例如var f=false,此时f为布尔类型。

1.3 :=符号

在go语言中遇到了一个新的符号:=,该符号是一个声明语句,当我们定义一个变量后,不能使用该符号再次初始化变量。即可以使用b:=20完成初始化。

2.数据类型

Go语言的数据类型包括基本数据类型,例如整数、浮点数、字符串等,复合类型例如数组、结构体等,以及指针、函数等特殊类型,其大多使用方法与c语言类似。

2.1 复合类型

2.1.1 数组
  • 数组初始化的方式有多种:
  • 直接初始化 var c [3]int=[3]int{1,2,3}
  • 通过字面量进行 c :=[3]int{1,2,3}
  • 数组长度不确定,编译器自行推断 c :=[...]int{1,2,3}
2.1.2 结构体

结构体的定义和声明与c语言类似,在此不再赘述。具体代码参考如下:

package main

import (
	"fmt"
)
type FF struct{
  a int
  b string
}
func main() {
  var f1,f2 FF
  f1=FF{10,"f1"}
  f2.a=20
  f2.b="f2"
  fmt.Println(f1,f2)//输出{10 f1} {20 f2}
}
2.1.3 切片

切片可以看作是一个可以变化大小的数组,其内置的len函数返回切片中有效元素的长度,内置的cap函数返回切片容量大小,则cap返回值将大于等于len返回值。

  var s []int=[]int{1,2,3}//初始化s切片,内部有1,2,3三个成员
  fmt.Println(s)//输出[1 2 3]
  s=append(s,4)//添加一个元素4
  fmt.Println(s)//输出[1 2 3 4]
  s=append([]int{-1,0},s...)//在开头添加两个元素-1与0
  fmt.Println(s)//输出[-1 0 1 2 3 4]
  s = s[1:] //删除开头一个元素
  fmt.Println(s)//输出[0 1 2 3 4]
  s = append(s[:2], s[3:]...)//删除下标为2的元素
  fmt.Println(s)//输出[0 1 3 4]

2.2 特殊类型

2.2.1 指针

指针的用法与c语言类似,存储变量内存地址。

 a:=10
 var p *int =&a
2.2.2 函数

go语言中函数的定义将返回值放于函数名所在行,可以通过func add(a, b int) (c int) 返回函数中的指定参数c。同时,函数是特殊的数据类型,可以作为变量进行赋值操作。

func add(a, b int) int {
    return a+b
}

func main() {
  var f func(int,int)int=add
  fmt.Println(f(2,3))//输出5
 }