package main
// 关键字var 声明变量 类型信息放在变量名后
//声明一个int型变量
var v1 int
//声明一个string类型
var v2 string
//声明多个变量
var v3, v4 bool
//[0 0 0 0 0 0 0 0 0 0] 数组
var v5 [10]int
//数组切片
var v6 []int
//声明结构体
var v7 struct {
f int
}
// 声明指针
var v8 *int
//声明map key为string类型,value是int类型
var v9 map[string]int
// 匿名函数和闭包
var v10 func(a int) int
//多个需要声明的变量放在一起
var (
name int
age string
)
package main
import "fmt"
func main() {
//声明变量的初始化,var 可以省略写法
var v1 int = 10
//编译器可以自动算出v2的类型
var v2 = 10
//编译器自动算出v3的类型
//同时进行变量声明和初始化
v3 := 10
fmt.Println(v1, v2, v3)
}
// 出现在:= 左侧的变量 只能声明一次,不可重复
package main
import "fmt"
//声明之后再赋值
func main() {
var i int
i = 100
var j int
j = 50
//Go语言的多重赋值,如下代码交换i和j的变量
//go的多重赋值特性可以很明显的优化代码,相比c/c++
i, j = j, i
fmt.Println(i, j)
}
package main
import "fmt"
//使用强类型语言编程时,调用函数时为了获取一个值,却因为函数返回多个值,又得定义一堆变量
//可以使用多重返回和匿名变量来避免这些问题
func GetName() (firstname, lastname, nickname string) {
return "yu", "yuchao", "chaoge"
}
//只想获得nickname,函数调用语句可以写
func main() {
//优化代码的清晰度
_, _, nickname := GetName()
fmt.Println(nickname)
}
package main
//声明go代码所属的包,包是go例最基本的分发单位,要生成可执行程序,必须名为main,且下面有个main()函数,作为执行起点
//导入本程序所以来的包,下列用到Println()函数,所以导入fmt
import "fmt"
//不得在源代码中写入未使用的包,否则编译器会出错
//软件工程的设计哲学,强制左花括号 { 的放置位置
//函数名的大小写规则
func Compute(value1 int, value2 float64) (resule float64, err error) {
//函数体
fmt.Println(value1, value2)
return
}
//main函数不能带参数,也不能定义返回值,命令行传入的参数存在os.Args变量中
func main() {
Compute(1, 3)
}
package main
//常量是编译期间就已知,而且不可改变,可以是数值类型(整型、浮点型、复数)、布尔类型、字符串
const Pi float64 = 3.14159265358979323846
//无类型浮点常量
const Zero = 0.0
const (
//无类型常量
size int64 = 1024
eof = -1
)
//常量多重赋值 u=0.0 v=3.0
const u, v float32 = 0, 3
//无类型整型,字符串常量
const a, b, c = 3, 4, "foo"