golang 标识符与变量

Golang 2020/11/10 Golang

一 标识符

1.1 关键字


Go现在拥有25个关键字:

if      for     func    case        struct      import               
go      type    chan    defer       default     package
map     const   else    break       select      interface
var     goto    range   return      switch      continue     fallthrough


1.2 保留字

内建常量:  
        true        false       iota        nil
内建类型:  
        int         int8        int16       int32       int64
        uint        uint8       uint16      uint32      uint64      uintptr
        float32     float64 
        complex128  complex64
bool:      
        byte        rune        string 	    error
内建函数:   
        make        delete      complex     panic       append      copy    
        close       len         cap	        real        imag        new   	    recover


二 变量


2.1 变量声明


Go变量声明的三种方式:

var a int		    // 声明一个变量,默认为0
var b = 10		    // 声明并初始化,且自动推导类型
c := 20			    // 初始化,且自动推导


注意:

- `:=`定义变量只能在函数内部使用,所以经常用var定义全局变量

- Go对已经声明但未使用的变量会在编译阶段报错:`** not used`

- Go中的标识符以字母或者下划线开头,大小写敏感

- Go推荐使用驼峰命名 


2.2 多变量声明

var a,b string
var a1,b1 string = "哼","哈"
var a2,b2 int = 1,2                             //类型可以直接省略
c,d := 1,2
var(
	e int
	f bool
)


2.3 变量值互换

m,n = n,m		//变量值互换
temp,_ = m,n		//匿名变量:变量值互换,且丢弃变量n


2.4 _丢弃变量


`_`是个特殊的变量名,任何赋予它的值都会被丢弃。该变量不占用命名空间,也不会分配内存。

_, b := 34, 35      //将值`35`赋予`b`,并同时丢弃`34`:


#### 2.5 := 声明的注意事项


下面是正确的代码示例:

in, err := os.Open(file)
out, err := os.Create(file)     // err已经在上方定义,此处的 err其实是赋值


但是如果在第二行赋值的变量名全部和第一行一致,则编译不通过:

in, err := os.Open(file)
in, err := os.Create(file)     // 即 := 必须确保至少有一个变量是用于声明


`:=`只有对已经在同级词法域声明过的变量才和赋值操作语句等价,如果变量是在外部词法域声明的,那么`:=`将会在当前词法域重新声明一个新的变量。


2.6 多数据分组书写


Go可以使用该方式声明多个数据:

const(
    i = 100
    pi = 3.1415
    prefix = "Go_"
)
    
var(
    i int
    pi float32
    prefix string
)


三 关键字iota


关键字iota声明初始值为0,每行递增1:

const (
    a = iota    	        // 0
    b =	iota 		        // 1        
    c = iota 		        // 2
)

const (
    d = iota    	        //  0
    e 				// 1        
    f 				// 2
)

//如果iota在同一行,则值都一样
const (
    g = iota    	        //0
    h,i,j = iota,iota,iota      // 1,1,1
    // k = 3                    // 此处不能定义缺省常量,会编译错误	
)


本文地址:https://www.stayed.cn/item/286

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。