Base-Knowledge
变量
- Go声明变量:
var a class
var a="data"
a:="data"
//支持多重赋值
a,b,c:='A','B','C'
- 特点:
与大多数语言类型前置不同,go类型后置 手动声明变量位数->int64,float64 make函数创建数组,Map等 大写字母开头的变量可导出。为公有变量->public 小写字母开头的变量不可导出,为私有变量->private go对于已声明但从未使用的变量将会在编译期报错 go中可以指定任意的小数位 go同时支持‘int’和‘uint’,长度相同;具体长度取决于不同编译器 rune是’int32‘的别称,byte是‘uint8’的别称 浮点数是一种不精确的表达方式,所以直接比较两个浮点数会出现意想不到的结果 java中字符串:String(S大写) go中字符串:string(s小写) go中字符串是不可变的
//编译报错
var s ="test"
s[0]='a'
修改字符串的值可以通过先转为字符数组修改后再转回字符串的方式实现
//编译成功
var s="test"
var c=[]byte(s)
c[0]='a'
var str=string(c)
在底层原字符串仍然没有改变,只不过得到了修改后的新的另一个字符串 特殊占位符_,所有赋给_的值都会被丢弃
__,a:=12,13
//13被赋给a,12被丢弃
imort(
"fmt"
__ "test"
)
//忽略test包中的所有内容,但是会执行test包中的init函数
使用len方法获取汉字的长度时结果不似预期,一个汉字的长度将被解释为3 要想得到预期结果,需要使用unicode/utf8这个包中的RuneCountInString函数来计算 错误处理:error接口专门用来处理错误信息
if err!=nil{
fmt.Println(err)
}
变量初始化:
var a int // a的值为: 0 类型为: int
var b string // b的值为: "" 类型为: string
var c interface{} // c的值为: nil 类型为: interface{}