Go语言常量

*早使用变量声明时,注意编码的问题,汉字的问题可能引起
 编译并不能通过。
 *如果你在定义变量 a 之前使用它,则会得到编译错误 undefined: a
 *如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误
 *此外,单纯地给 a 赋值也是不够的,这个值必须被使用
 *全局变量是允许声明但不使用。 同一类型的多个变量可以声明在同一行
* 如果你想要交换两个变量的值,则可以简单地使用 a, b = b, a,两个变量的类型必须是相同。

*空白标识符 _ 也被用于抛弃值,如值 5 在:_, b = 5, 7 中被抛弃。

_ 实际上是一个只写变量,你不能得到它的值。这样做是因为 Go 语言中你必须使用所有被声明的变量,
但有时你并不需要使用从一个函数得到的所有返回值。并行赋值也被用于当一个函数返回多个返回值时,
比如这里的 val 和错误 err 是通过调用 Func1 函数同时得到:val, err = Func1(var1)。

常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,
否则编译不过

eg:

package main

import "unsafe"
const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(a)
)

func main(){
    println(a, b, c)
}

注意:在不同的引入的包中使用的println的规范不同,有的不用大写p有的需要;


特殊常量iota

可以认为是一个被编译器修改的常量

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明
将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
eg:
package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}

eg:
package main

import "fmt"

const (
    i = 1 << iota
    j = 3 << iota
    k
    l
)

func main() {
    fmt.Println("i=", i)
    fmt.Println("j=", j)
    fmt.Println("k=", k)
    fmt.Println("l=", l)
}

结果为:
i= 1
j= 6
k= 12
l= 24















posted @ 2018-09-28 18:55  酷酷的排球  阅读(294)  评论(0编辑  收藏  举报