Go 语言入门指南:基础语法和常用特性解析 | 豆包MarsCode AI刷题

28 阅读2分钟

字符串连接

Go 语言的字符串连接可以通过 + 实现:

package main
import "fmt"
func main() {
    fmt.Println("abc" + "efg")
}

变量声明

指定变量类型,如果没有初始化,则变量默认为零值

数值类型(包括complex64/128)为 0 布尔类型为 false 字符串为 ""(空字符串)

根据值自行判定变量类型

package main
import "fmt"
func main() {
    var d = true
    fmt.Println(d)
}
// true

如果变量已经使用 var 声明过了,再使用 := 声明变量,就产生编译错误

var intVal int 
intVal :=1 // 这时候会产生编译错误,因为 intVal 已经声明,不需要重新声明

intVal := 1 相等于:

var intVal int 
intVal =1 

可以将 var f string = "Runoob" 简写为 f := "Runoob":

多变量声明

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误


// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

go中的select语句相当于c中的c语言语句

Go 语言切片

Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。 你可以声明一个未指定大小的数组来定义切片:

var identifier []type

切片初始化

s :=[] int {1,2,3 } 

len() 和 cap() 函数

切片是可索引的,并且可以由 len() 方法获取长度。 切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少

package main

import "fmt"

func main() {
   var numbers = make([]int,3,5)

   printSlice(numbers)
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

输出结果:

len=3 cap=5 slice=[0 0 0]

空(nil)切片

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil。

package main

import "fmt"

func main() {
   var numbers []int

   printSlice(numbers)

   if(numbers == nil){
      fmt.Printf("切片是空的")
   }
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}