变量使用步骤
- 声明
- 赋值
- 使用
package main
import "fmt"
func main(){var age int //声明一个 int类型的变量叫ageage = 18 //给变量用 = 赋值fmt.Println(age) //使用变量 输出变量的值
}
编译运行输出变量值
变量的四种使用方式
package main
import "fmt"
func main(){var num1 int = 18 //1.指定变量的类型并且赋值fmt.Println(num1) //使用变量 输出变量的值var num2 int //2定变量类型,不赋值,使用默认值fmt.Println(num2 ) //使用变量 输出变量的值var num3="tom" //3定变量不指定类型,根据后边的赋值自动确认类型fmt.Println(num3 ) //使用变量 输出变量的值num4:="男" //4.省略 var 使用 :=,不能写成 = fmt.Println(num4 ) //使用变量 输出变量的值
}
编译运行
一次性声明多个变量
package main
import "fmt"
func main(){ //未赋值的fmt.Println("未赋值的####################")var n1,n2,n3 intfmt.Println(n1)fmt.Println(n2)fmt.Println(n3)//赋值的fmt.Println("赋值的####################")var n4,n5,n6 = 10,"小明",7.8fmt.Println(n4)fmt.Println(n5)fmt.Println(n6)
}
编译运行
变量的类型
-
定义在函数内的变量叫做局部变量
- 定义在函数外部的变量叫做全局变量
package main
import "fmt"
//第一种声明方式 一个一个声明
var n1 = 100
var n2 = 9.7//第二种声明方式,一次多个
var (n3 = 500n4 = "hello"
)
func main(){ fmt.Println(n1)fmt.Println(n2)fmt.Println(n3)fmt.Println(n4)
}
变量的数据类型
整数类型
【1】整数类型介绍:
简单的说,就是用于存放整数值的,比如10,-45,6712等等。
【2】有符号整数类型:
【3】无符号整数类型:
【4】其他整数类型:
Golang的整数类型,默认声明为int类型
浮点型
浮点型底层存储:符号位+指数位+尾数位,尾数位只存了一个大概,有可能会出现精度丢失所以通常建议使用 float64,默认也是float64
浮点数可以用十进制表示形式,也可以用科学计数法
//十进制
var num float32= 3.14//科学计数法
var mum float64 = 314E-2
var num float64 = 314e-2
字符类型
定义字符使用byte
字母、数字、标点等字符底层是按照ASCII码进行存储,本质上是一个整数,可以至直接参与运算,输出字符的时候会将对应码值输出。
package main
import "fmt"func main(){ var c1 byte = 'a'var c2 byte = '6'var c3 byte = '('fmt.Println(c1 + 20) //117fmt.Println(c1) //97fmt.Println(c2) //54fmt.Println(c3) //40
}
汉字字符,底层对应的是Unicode码值,使用byte会报错类型溢出,因为byte的范围是255,可以使用int
如果想显示对应的字符,必须采用格式化输出
转义字符
常用转义字符
\n 换行 \b 退格 \r 光标回到本行开头,后续就会替换原有的字符
\t 制表符 \" 输出"
布尔型
布尔型(bool ) 只有两个值 true和false,只占用一个字节,一般用于逻辑运算和流程控制
字符串
一串固定长度的字符连接起来的字符序列
如果字符串中没有特殊字符,直接使用英文双引号包裹
如果有特殊字符使用 英文反引号包裹或转义字符
字符串拼接 使用 + 或者 +=,当字符过长时吗+ 需要保留在上一行的最后
基本数据类型默认值
数据类型 | 默认值 | 数据类型 | 默认值 |
---|---|---|---|
整数类型 | 0 | 布尔 | false |
浮点类型 | 0 | 字符串 | "" 空串 |
数据类型转换
基本数据类型转换
go语言没有自动类型转换,必须显示转换,表达式 T(v) 将值v转换为T类型
表数范围大的类型转换表数范围小的类型会有精度丢失的问题
例如:
package main
import "fmt"func main(){ var i int8 = 3var f float32 = float32(i)fmt.Println(i) fmt.Println(f)
}
基本类型转string
方式1:fmt.springf("%参数",表达式)
方式2:需要使用strconv包的函数
%T 和 strconv. FormatXxxx 的使用详见go的api文档
package main
import "fmt"
import "strconv"
func main(){ var i int = 19var str1 string = fmt.Sprintf("%d",i) fmt.Println(str1) //%d 10进制转字符串var str2 string = strconv.FormatInt(int64(i),10)fmt.Println(str2) var f float64 = 19.0var str3 string = fmt.Sprintf("%f",f) var str4 string = strconv.FormatFloat(f,'f',9,64) fmt.Println(str3) //%f 浮点型转字符串fmt.Println(str4)
}
string转基本类型
使用strconv包的函数,详见go语言的api
string转其他类型的时候必须是有效的数据,否者会转为对应的默认值
package main
import "fmt"
import "strconv"
func main(){ var s1 string = "true"var b bool/*ParseBool 函数有两个返回值(value bool,err error)value是我们需要的数据,err是出现的错误err可以使用 _ 忽略*/b , _= strconv.ParseBool(s1)fmt.Println("b的类型是:%T,b=%v ",b,b)}