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

52 阅读3分钟
  1. 包:Go程序都是由包构成的,程序从main包开始运行。(分组导入,更推荐)
package main

import (
	"fmt"
	"math/rand"
)

func main() {
	fmt.Println("My favorite number is", rand.Intn(10))

程序通过导入路径"fmt"和"math/rand"来使用两个包

导出名:一个名字以大写字母开头,即导出名。

func main() {
	fmt.Println(math.Pi)
}

在导入一个包时,只能引用其中已导出的名字,任何未导出的名字在该包外均无法访问。

  1. 函数可以没有参数或接收多个参数。类型在变量名之后。当连续两个或多个函数的已命名形参类型相同时,除最后一个类型外,其他都可以忽略。
func add(x int, y int) int {
	return x + y
}

func add2(x, y int) int {
	return x + y
}

函数可以返回任意数量的返回值。

func swap(x, y string) (string, string) {
	return y, x
}

上例返回了两个字符串

  1. 命名返回值:Go的返回值可被命名,被视作定义在函数顶部的变量。没有参数的return返回已命名的返回值,即直接返回。 直接返回语句尽量出现在短函数中,在长函数中会影响代码可读性。

  2. 变量:var语句声明变量列表,类型在最后。var语句可以出现在包或函数级别。 变量声明可以包含初始值,初始值存在时,可以省略类型。

var c, python, java bool

func main() {
	var i int
	fmt.Println(i, c, python, java)
}

简洁赋值语句:=可在类型明确的地方代替var声明,但仅可在函数内使用。函数外的每个语句都必须以关键字开始。

func main() {
	var i, j int = 1, 2
	k := 3
}
  1. Go的基本类型:bool、string、 int、int8、int16、int32(rune)、int64 uint、uint8(byte)、uint16、uint32、uint64 float32、float64 complex64、complex128 0值:数值类型0、布尔类型false、字符串""

  2. 类型转换:不同类型的项之间赋值时需要显示转换。表达式T(v)将v转换为类型T

var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
i := 42
f := float64(i)
u := uint(f)
  1. 类型推导:在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。

    当右值声明了类型时,新变量的类型与其相同:

var i int
j := i // j 也是一个 int

当右边包含未指明类型的数值常量时,新变量的类型可能是 intfloat64  或 complex128 ,取决于常量的精度:

i := 42           // int
f := 3.142        // float64
g := 0.867 + 0.5i // complex128
  1. 常量:使用const关键字,与变量类似。可以是字符、字符串、布尔值、数值。不能用:=声明 数值常量:高精度。若未指定类型,由上下文决定。

  2. Go语言没有类,但可以为结构体类型定义方法,方法即一类带特殊接收者参数的函数。方法接收者在自己的参数列表内,位于func关键字和方法名之间。也可以为非结构体类型声明方法,接收者的类型定义和方法声明必须在同一个包内。 接口类型是一组方法签名定义的集合。接口类型的变量可以保存任何实现了这些方法的值。

文章进行了Go语言基础语法的部分总结,为理解和编写Go语言程序提供了基础知识。除文章内容外,还有流程控制语句、指针、结构体、数组等相关内容,均为基础内容,需要掌握。