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















猜你喜欢

转载自www.cnblogs.com/01black-white/p/9715086.html
今日推荐