package main
import (
"fmt"
"strconv"
)
//const 来定义枚举类型
const (
//可以在const() 添加一个关键字 iota, 每行的iota都会累加1, 第一行的iota的默认值是0
BEIJING = iota //iota = 0
SHANGHAI //iota = 1
SHENZHEN //iota = 2
)
const (
a, b = iota+1, iota+2 // iota = 0, a = iota + 1, b = iota + 2, a = 1, b = 2
c, d // iota = 1, c = iota + 1, d = iota + 2, c = 2, d = 3
e, f // iota = 2, e = iota + 1, f = iota + 2, e = 3, f = 4
g, h = iota * 2, iota *3 // iota = 3, g = iota * 2, h = iota * 3, g = 6, h = 9
i, k // iota = 4, i = iota * 2, k = iota * 3 , i = 8, k = 12
)
func fun1(a string, b int) int {
fmt.Println("a = ", a)
fmt.Println("b = ", b)
b,error := strconv.Atoi(a)
if error != nil{
fmt.Println("字符串转换成整数失败")
}
b = b + 1
fmt.Println(b)
return b
}
//返回多个返回值,匿名的
func fun2(a int, b string) (string, int) {
fmt.Println("a = ", a)
fmt.Println("b = ", b)
d := strconv.Itoa(a) //数字变成字符串
d = d + "sdfs"
fmt.Println(d)
e,error := strconv.Atoi(b) //字符串转换成整数
if error != nil{
fmt.Println("字符串转换成整数失败")
} else {
fmt.Println(e)
}
return d, e
}
//返回多个返回值, 有形参名称的
func fun3(a string, b int) (r1 string, r2 int) {
fmt.Println("---- foo3 ----")
fmt.Println("a = ", a)
fmt.Println("b = ", b)
//r1 r2 属于foo3的形参, 初始化默认的值是0
//r1 r2 作用域空间 是foo3 整个函数体的{}空间
fmt.Println("r1 = ", r1)
fmt.Println("r2 = ", r2)
//给有名称的返回值变量赋值
r1 = a
r2 = 2000
return
}
func main() {
//常量(只读属性)
const length int = 10
fmt.Println("length = ", length)
//length = 100 //常量是不允许修改的。
fmt.Println("BEIJIGN = ", BEIJING)
fmt.Println("SHANGHAI = ", SHANGHAI)
fmt.Println("SHENZHEN = ", SHENZHEN)
fmt.Println("a = ", a, "b = ", b)
fmt.Println("c = ", c, "d = ", d)
fmt.Println("e = ", e, "f = ", f)
fmt.Println("g = ", g, "h = ", h)
fmt.Println("i = ", i, "k = ", k)
// iota 只能够配合const() 一起使用, iota只有在const进行累加效果。
c := fun1("666", 555)
fmt.Println("c = ", c)
ret1, ret2 := fun2(1000, "999")
fmt.Println("ret1 = ", ret1, " ret2 = ", ret2)
ret1, ret2 = fun3("foo3", 333)
fmt.Println("ret1 = ", ret1, " ret2 = ", ret2)
}