一、变量定义
①使用var关键字
var a,b,c bool
var s1,s2 string = "hello","world"
可放在函数内,或直接放在包内
使用var()集中定义变量
②让编译器自动决定类型
var a,b,i,s1s2 = ture,false,3,"hello","world"
③使用:=定义变量
a,b,i,s1,s2 := ture,false,3,"hello","world"
只能在函数内使用
不能重复定义(:=)变量
二、内建变量类型
Go语言的内置变量类型有:
-
bool: 布尔类型,只有 true 和 false 两个值。
-
string: 字符串类型,用于存储文本信息。
-
int、int8、int16、int32、int64: 整数类型,可以存储不同位数的整数值。
-
uint、uint8、uint16、uint32、uint64: 无符号整数类型,可以存储不同位数的无符号整数值。
-
float32、float64: 浮点数类型,用于存储实数值。
-
complex64、complex128: 复数类型,用于存储实数和虚数部分的复数值。
-
byte: 类似于 uint8 类型,用于存储ASCII编码的字符值。
-
rune: 类似于 int32 类型,用于存储Unicode编码的字符值。
-
uintptr: 无符号整型,用于存储一个指针的数值。
以上是 Go 语言的内置变量类型。除此之外,Go 还支持用户自定义的数据类型,包括结构体、数组、切片、映射、通道等。
- 变量类型写在变量名前面
- 编译器可推测变量类型
- 没有char,只有rune
- 原生支持复数类型
变量的强制转换:
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() {
triangle()
}
我们在triangle函数里定义 a,b,c int类型的变量,并给a,b赋值,math.Sqrt()开根号的功能,由于这个方法参数需要float64类型的,然后我们就得转换类型,然后返回一个不是int类型的,还得转换成int类型,因为c变量为int类型。
三、常量的定义
const 数值可作为各种类型使用
const filename = "abc.txt"
const a, b = 3, 4
四、if_else 、switch 条件判断语句
- if的条件里可以赋值
- if的条件里赋值的变量作用域就在这个if语句里
package main
import (
"fmt"
"io/ioutil"
)
const filename = "abc.txt"
func main() {
if contents, err := ioutil.ReadFile(filename); err == nil {
fmt.Println(string(contents))
} else {
fmt.Println(err)
}
//fmt.Println(contents) //会报错
}
- switch 会自动break ,switch 后可以没有表达式
package main
import "fmt"
func f() {
if 7%2 == 0 {
fmt.Print("7 is even")
} else {
fmt.Println("7 is odd")
}
if 8%4 == 0 {
fmt.Print("8 is divisible by 4")
}
if num := 9; num < 0 {
fmt.Print(num, "is negetive")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
}
func eval(a, b int, op string) int {
var result int
switch op {
case "+":
result = a + b
case "-":
result = a - b
case "*":
result = a * b
case "/":
result = a / b
default:
panic("unsupported operator:" + op)
}
return result
}
func main() {
fmt.Println(eval(3, 4, "+"))
fmt.Println(eval(3, 4, "^"))
f()
}
这两个是运用了if_else、switch 语句,可见简便多了,能省则省呀。
五、for 循环
- for 的条件里不需要括号
- for的条件里可以省略初始条件,结束条件,递增条件
package main
import "fmt"
func main() {
i := 1
for {
fmt.Println("loop")
break
}
for j := 7; j < 9; j++ {
fmt.Print(j)
}
for n := 0; n < 5; n++ {
if n%2 == 0 {
continue
}
fmt.Println(n)
}
for i <= 3 {
fmt.Println(i)
i = i + 1
}
}
go语言删去了while,使语句再简便一点
今天就学到这~加油