Go中的变量定义与_

  • _先说一下划线,可以把它当成一个占位符,之前忽略,比如文件处理的时候,忽略异常。

os.Open,返回值为*os.File,error,普通写法是

//如果此时不需要知道返回的错误值
f,err := os.Open(xxxxxxx)

//如此则忽略了error变量就可以用
f, _ := os.Open(xxxxxx)

_还有一个用途,就是进行一个包的init操作,而不引入这个包,这么说有点抽象,比如 jpg包中的init函数注册了一个“jpg”的输入流,如果直接引用 “jpg” 包,而不进行任何操作,报错是一定的。main包里只要一个可以直接用“jpg”的输入流,而不用“jpg”包里的任何函数,这时,就可以

import _ "jpg"  
  • 变量的类型与C差不多,定义有些区别,总结如下:
    使用var
    关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面:
    //定义一个名称为“variableName”,类型为"type"的变量var variableName type
1 定义多个变量

//定义三个类型都是“type”的变量
var vname1, vname2, vname3 type

2 定义变量并初始化值

//初始化“variableName”的变量为“value”值,类型是“type”
var variableName type = value

3 同时初始化多个变量

// 定义三个类型都是"type"的变量,并且分别初始化为相应的值 //vname1为v1,vname2为v2,vname3为v3
var vname1, vname2, vname3 type= v1, v2, v3
//定义三个变量,它们分别初始化为相应的值 vname1为v1,vname2
//为v2,vname3为v3 然后Go会根据其相应值的类型来帮你初始化它们
var vname1, vname2, vname3 = v1, v2, v3

4 函数内初始化变量 只能用在局部变量中

//定义三个变量,它们分别初始化为相应的值 vname1为v1,vname2为v2,vname3为v3 编译器会根据初始化的值自动推导出相应的类型
vname1, vname2, vname3 := v1, v2, v3

5 定义风格
import(
   "fmt" 
   "os"
)
const(
 i = 100
 pi = 3.1415
 prefix = "Go_"
)
var(
 i int 
pi float32 
prefix string
)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容