main
package mainimport "fmt"func test() (int, error) {    return 0, nil}func main() {    //变量的定义    //静态语言的变量和动态语言的变量差异很大    //1. 变量的声明和定义    //var a = 20    //var b = 20    //c := 100    //fmt.Println(a, b, c)    //    //d, e := 1, 2    //fmt.Println(d, e)    //    //var f, g, h int    //f, g, h = 1, 2, 3    //fmt.Println(f, g, h)    ////集合类型    //var (    //    a    int    //    name string    //)    var i = 10    i = 20    fmt.Println(i)    //匿名变量 变量一旦被定义 不使用会报错    //常量的定义    //const PI = 3.14159265    //r := 2.0    //c := 2. * PI * r    //fmt.Println(c)    //枚举    //const (    //    Unknown = 0    //    Female  = 1    //    Male    = 2    //)    //常量组如不指定类型和初始化值,该类型和值和上一行的一致    //const (    //    x int = 16    //    y    //    s = "abc"    //    z    //)    //fmt.Println(x, y, s, z)    //Output:16 16 abc abc    //1. 常量的数据类型值可以是布尔、数字、字符串    //2. 不曾使用的常量,在编译的时候不会报错    //const常量的iota, 常量计数器    const (        Unknown = iota //计数器 从0开始 第一行不能省略        Female        Male        //Book    = 0        //Cloth   = 1        //Phone   = 2        //DestTop = 3    )    //0,1,2 本身不重要,重点在于这三个值不一样    fmt.Println(Unknown, Female, Male)    //iota你真的懂了吗?    //    1. iota只能在常量组中使用    //    2. 各个常量组之间,const定义块互不干扰    //     3. 没有表达式的常量定义复用上一行的表达式    //    4. 从第一行开始,iota从0 "逐行" 加一    const (        a = iota //iota = 0        b = 10   //iota = 1 每一行iota加一        c        // c = 10, iota = 2        //d = iota        d, e = iota, iota        f    = iota        //iota代表的是这里的行数    )    //fmt.Println(a, b, c, d)    //Output: 0 10 10 3    fmt.Println(a, b, c, d, e, f)    //Output: 0 10 10 3 3 4}
scope
package mainimport "fmt"var c = 20func main() {    //变量的作用域    //局部变量    //缩进的习惯    //静态语言写起来代码多,但是严谨性很好    //c := 10 //全局变量定义时无法使用短变量声明    //fmt.Println(c)    ////Output: 10    //sex := "Female"    //if sex == "Female" {    //    outStr := "女"    //}    //fmt.Println(outStr)    //程序无法运行    fmt.Printf("%c\n", 97)    //在go中字符和字符串不是一种类型 字符类型是单引号 字符串是双引号    fmt.Printf("%d", '慕') //int32 Unicode编码}