字符串连接
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)
}