目录
Golang 编程注意事项
定义变量
包内变量
函数内变量
总结:
内建变量类型
bool, string
整数类型
byte, rune
float32,float64,complex64,complex128
常量与枚举
常量
使用常量定义枚举类型
Golang 编程注意事项
go语言定义的变量一定要被使用,不然会报错方法体()和{一定要连写,不能换行使用fmt.Printf时需要自己手动换行注释用 //
定义变量
变量类型写在变量名之后编译器可以推测变量类型没有char,只有rune原生支持复数类型
包内变量
package main
import "fmt"
// 1.函数外部定义变量,必须有var或者func来定义,不能用 := 定义
// 变量的作用域是本包内部 如:package main内部
var aa = 3
var ss = "kkk"
var bb = true
func main() {
fmt.Println(aa, ss, bb)
}
可以简写为
// 可以简写用一个var定义变量
var (
aa = 3
ss = "kkk"
bb = true
)
函数内变量
// 2.函数内部定义变量
func variableZeroValue(){
var a int
var s string
fmt.Printf("%d %q \n",a,s)
}
// 像c,c++ 可以同时给多个变量指定类型
func variableInitialValue(){
var a, b int =3, 4
var s string = "abc"
fmt.Println(a, b, s)
}
// 自动适配变量类型
func variableTypeDeduction(){
var a, b, c, s = 3, 4, true, "def"
fmt.Println(a, b, c, s)
}
// 初次用 :=定义变量且赋值,没有类型不能用=,再次赋值用 =
func variableShorter(){
a, b, c, s := 3, 4, true, "def"
fmt.Println(a, b, c, s)
}
func main() {
fmt.Println("hello world")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableShorter()
}
总结:
使用var关键字
var a, b,c boolvar s1, s2 string = “hello”, “world”可放在函数内,或直接放在包内作用var()集中定义变量
让编译器自动决定类型
var a,b, i, s1, s2 = true, false, 3, “hello”, “world”
使用 :=定义变量
a,b, i, s1, s2 := true, false, 3, “hello”, “world”只能在函数内使用
内建变量类型
bool, string
整数类型
没有long,Long类型
有符号整数分两类:
有固定长度:int, int8, int16, int32, int64, intptr(指针,也根据系统长度)
无固定长度:int 长度根据操作系统来,32位系统长度为32,64位系统长度为64
无符号整数: (u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr
byte, rune
rune是go语言的字符型,char只有一字节,国际化时坑多,rune的字节为32位,unicode两字节,utf-8很多字符3个字节,因此我们用一个4字节的int ascii来代表rune,byte是8位的,rune是32位的,他们跟整数是可以互用的,我们等于说对于整数来说就是个别名
float32,float64,complex64,complex128
complex复数,complex64的实部和虚部分别是32位,complex128的实部和虚部分别是64位
常量与枚举
常量
const值可以作为各种类型使用
// 常量可以放在包内,都包内,函数内都可以使用,一般用小写,大写有其他含义
const filename = "abc.txt"
func consts(){
// const不指定类型时,其他地方用到时可以避免要强制转换,也可以指定类型
const a, b = 3,4
var c int
c = int(math.Sqrt(a * a + b * b))
fmt.Println(filename, c)
}
可以简写成一个代码块
const(
filename = "abc.txt"
a, b = 3,4
)
使用常量定义枚举类型
普通值枚举类型
func enums(){
const(
cpp = 0
java = 1
python = 3
golang = 4
)
fmt.Println(cpp, java, python, golang)
}
自增值枚举类型
使用iota递增
func enums(){
const(
cpp = iota
_ // 跳过一个1
python
golang
javascript
)
fmt.Println(cpp, javascript, python, golang)
}
// 输出javascript为4
func enums(){
const(
cpp = iota
_
python
golang
javascript
)
// b, kb, mb, gb, tb, pb
const(
b = 1 <<(10 * iota)
kb
mb
gb
tb
pb
)
fmt.Println(cpp, javascript, python, golang)
fmt.Println(b, kb, mb, gb, tb, pb)
// 输出 1 1024 1048576 1073741824 1099511627776 1125899906842624
}
有疑问加站长微信联系(非本文作者)