文章目录
(一)变量的定义
变量的定义可以使用关键字var进行定义,写法是
var 变量 类型
,比如var i int
定义i为int类型的变量
1,定义并输出变量实例演示
定义为int类型,并没有给予具体的数值时,输出为 0
package main
import "fmt"
func main() {
var i int
fmt.Println(i)
}
2,定义但未指定数值类型时的情况
定义为bool型,但是在main函数中没有给予具体的类型定义时就会输出false
在这里的 i 在main函数中被给予了数值类型了,但是x,y没有被给予数值类型,输出的时候x和y均为false
package main
import "fmt"
var i, x, y bool
func main() {
var i int
fmt.Println(i, x, y)
}
3,定义的变量必须被使用
定义的变量必须被使用,否则会报错
package main
import "fmt"
func main() {
var i int
fmt.Println()
}
4,定义变量不写类型
如果定义了变量不写类型,变量被初始化的时候该变量的类型会被进行隐式转换
扫描二维码关注公众号,回复: 11316426 查看本文章
这里的变量被隐式转换为了string类型 (使用fmt.Printf()进行打印,%T可以输出变量类型)
package main
import "fmt"
var a = "今天天气很好!"
func main() {
fmt.Printf("该变量的类型为:%T ;该变量的值为:%v", a, a)
}
(二)变量的赋值
在Go中变量的赋值有两种符号可以使用 = 和 :=
= 符号赋值的情况
1,单个变量赋值
package main
import "fmt"
func main(){
var a int = 1
fmt.Println("a的值为:",a)
}
2,多个变量赋值
package main
import "fmt"
func main() {
var a, b int = 1, 3001
var x, y, z = "我是X", 30, true
fmt.Println(a, b, x, y, z)
}
:= 符号赋值的情况
:= 用于在函数中对变量进行赋值,是一种简短声明的语法,类型可以不写,因为会进行隐式转换,使用:= 赋值的变量会被自动赋予类型
package main
import main
func main(){
a := "今天天气很好!"
fmt.Println(a)
}
警告!如果这种变量短声明使用在函数外面会报错,:= 的写法必须位于函数内部
相反的,= 定义的变量可以声明在函数外面且正常输出
(三)基本类型
Go语言的基本类型有
基本类型 |
---|
bool |
string |
int, int8 ,uint16 ,uint32 ,uint64 ,uintptr |
byte (uint8的别名) |
rune (int32的别名) |
float32 , float64 |
complex64 ,complex128 |
下面这个程序是Golang官网的一个案例,我们来看下输出了啥
package main
import (
"fmt"
"math/cmplx"
)
var (
ToBe bool = false
MaxInt uint64 = 1<<64 - 1
z complex128 = cmplx.Sqrt(-5 + 12i)
)
func main() {
fmt.Printf("Type: %T Value: %v\n", ToBe, ToBe)
fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
fmt.Printf("Type: %T Value: %v\n", z, z)
}
注意到上面的变量的定义没有,可以进行分步定义(因式分解factored),写到块里面,比如这段
var (
ToBe bool = false
MaxInt uint64 = 1<<64 - 1
z complex128 = cmplx.Sqrt(-5 + 12i)
)
传统定义是
var ToBe bool = false
var MaxInt uint64 = 1<<64 - 1
var z complex128 = cmplx.Sqrt(-5 + 12i)
int,uint和uintptr类型在32位系统上通常为32位宽,在64位系统上为64位宽。 当你需要整数值时,应该使用int,除非有特殊原因要使用大小或无符号整数类型。
(四)0 值变量 (zero variable)
变量的初始化值如果没有给予一个值,将会被自动赋予 0 值 , 字符串会变成空字符串 " " , bool型会显示false
package main
import "fmt"
func main() {
var x int
var y float32
var z string
var a bool
fmt.Printf("%v , %v , %q , %v", x, y, z, a)
}
(五)类型转换
类型转换的写法是 T(v) ,T代表类型,v表示遍历,比如:int(a)
将a转化为整型
package main
import "fmt"
func main() {
var a float32 = 12312.89
fmt.Printf("改变前:a is %v and this type is %T \n", a, a)
fmt.Printf("改变后:a is %v and this type is %T", int(a), int(a))
}
(六)类型推断
被定义了类型的变量赋值给另外一个变量的时候,会将类型一并继承下去
package main
import "fmt"
func main(){
var b float64 = 78.1200
a := b
fmt.Printf("a 的值是%v ,类型是 %T",a,a)
}
(七)常量 (constant)
常量的定义使用关键词 const 定义
package main
import "fmt"
const str1 = "今天天气同样的美好!"
func main() {
const str2 = "today same wonderful like yesterday !"
fmt.Println("今天天气如何?// ", str1, "\nHow about today ? //", str2)
}
无类型数值常量的类型定义取决于该常量的使用
package main
import "fmt"
func main(){
const(
a = 1010
b = 12
)
fmt.Printf("a的类型为:%T",a*10.12)
fmt.Printf("a的类型为:%T",a*1000)
}