热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

golang知识精要(二)

类型go是**静态类型**语言,不能在运行期改变变量类型。变量定义使用var定义变量,自动初始化为零值;如果提供初始值,可省略变量类型;函数内部可使用:定义变量。varxint自动

类型

go是**静态类型**语言,不能在运行期改变变量类型。

变量定义



  • 使用var定义变量,自动初始化为零值;

  • 如果提供初始值,可省略变量类型;

  • 函数内部可使用:=定义变量。

var x int // 自动初始化为0
var f float32 = 1.6
var s = "abc"
func main(){
x := 123
}

多变量



  • 可一次定义多个变量;

  • 多变量赋值时,先计算所有相关值,然后再从左到有依次赋值

var x, y, z int
var s, n = "abc", 123
data, i := [3]int{0, 1, 2}, 0
i, data[i] = 2, 100 //(i=0) -> (i=2), (data[0]=100)

const



  • 常量值必须是编译期可确定的数字、字符串、布尔值

const (
s = "abc"
x // x = "abc" 常量组中,如不提供类型和初始值,那么与上一常量相同
b = len(a)
c = unsafe.sizeof(b) // 可以使用len, cap, unsafe.sizeof等编译器可确定结果的函数返回值
)

枚举

const (
sunday = iota // 0
monday // 1
..
)
const (
_ = iota // iota =0
kb int64 = 1 <<(10 * iota) // iota = 1
mb // 与kb表达式相同,但iota = 2
gb
)

变量默认值

























































类型默认值长度
boolfalse1
byte01
rune04
int/uint0-
float*0.0-
string""-
slice / map / channelnil-
interface/functionnil-
array / stuct--

类型转换



  • 不支持隐式转换

var b byte = 100
var n int = (int)(b) // 显示转换,建议(type)
a := 100
if a { // 不能使用其他类型当bool使用
println("true")
}

指针

与c类似,略。

数组

var a [4]int = [4]int{1,2} //未初始化的元素将被赋为零值
var b = [...]string{"hello"} //长度为1
c := [...]int{99:-1} //定义了100个元素,最后一个初始化为-1

说明



  • 如果数组的元素类型是可以互相比较的,那么数组类型也可以互相比较

  • 当两个数组的所有元素相等,那么数组相等


表达式


range

[注意事项](https://studygolang.com/articles/12958)

switch



  • 可省略break,默认自动终止。

x := []int{1, 2, 3}
i := 2
switch i {
case x[1]:
println("a") // 自动终止
case ..
}
switch { // 可省略条件
case x > 0 :
...
}
switch i := 2; { // 带初始化语句
...
}

推荐阅读
author-avatar
迷失港湾的豪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有