这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战
Go小知识 | 基本语法
变量定义
使用var 关键字
- var a,b,c bool
- var 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"
- 只能在函数内使用
package main
import "fmt"
// 包全局不能使用 := 定义变量
var (
aa = 3
ss = "kkk"
bb = true
)
// 变量空值
func variableZeroValue () {
var a int
var s string
fmt.Printf("%d %q\n",a,s)
}
// 变量赋值
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"
b = 5 // 改变值
fmt.Println(a,b,c,s )
}
func main(){
fmt.Println("Hello GoLang")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableShorter()
fmt.Println(aa,ss,bb)
}
复制代码
Hello GoLang
0 ""
3 4 abc
3 4 true def
3 5 true def
3 kkk true
复制代码
内建变量类型
- bool, string4
- (u)int, (u)int8,(u)int16,(u)int32,(u)int64,unitptr(指针) u无符号
- byte,rune (go 语言字符型32位, 类似于char)
- float32,float64,complex64,complex128
package main
import (
"fmt"
"math/cmplx"
)
func euler() {
c := 3 + 4i
fmt.Println(cmplx.Abs(c))
}
func main(){
fmt.Println("Hello GoLang")
euler()
}
复制代码
Hello GoLang
5
复制代码
强制类型转换
类型转换是强制的, go 语言中之后强制类型转换
package main
import (
"fmt"
"math"
)
func triangle () {
var a,b int = 3,4
var c int
c = int(math.Sqrt(float64(a*a + b*b))) // 强制类型转换
fmt.Println(c)
}
func main(){
fmt.Println("Hello GoLang")
triangle()
}
复制代码
常量的定义
基本用法
package main
import (
"fmt"
"math"
)
func consts() {
const filename = "abc.txt"
const a,b = 3, 4
var c int
c = int(math.Sqrt(a*a+b*b))
fmt.Println(filename,c)
}
func main(){
consts()
}
复制代码
abc.txt 5
复制代码
枚举类型
package main
import (
"fmt"
)
func enums () {
const(
cpp = 0
java = 1
python = 2
golang = 3
)
fmt.Println(cpp, java, python, golang)
}
func main(){
enums() // 0 1 2 3
}
复制代码
iota 自增值
自增值枚举类型
package main
import (
"fmt"
)
func enums () {
const(
cpp = iota //自增值
_
java
python
golang
)
fmt.Println(cpp, java, python, golang)
}
func main(){
enums() // 0 2 3 4
}
复制代码
// 定义 b,kb,mb,gb,tb,pb
package main
import (
"fmt"
)
func enums () {
const(
b = 1<< (10*iota)
kb
mb
gb
tb
pb
)
fmt.Println(b,kb,mb,gb ,tb,pb)
}
func main(){
enums() // 1 1024 1048576 1073741824 1099511627776 1125899906842624
}
复制代码