go语言(2) 变量

1.声明或者定义变量
2.赋值
3.使用

package main
import "fmt"
func main() {
	//定义变量(主动指定类型)
	var i int
	//变量赋值
	i = 10
	//使用变量
	fmt.Println("i = " , i)
}

运行可以使用命令

C:\Users\g\go\src\awesomeProject>go run 1.go
i =  10

也可以先编译再执行

C:\Users\g\go\src\awesomeProject>go build 1.go

C:\Users\g\go\src\awesomeProject>1.exe
i =  10

定义变量有三种方式

package main
import "fmt"
func main() {
	//1.指定变量类型再赋值,若不赋值则使用默认值,int的默认值为0
	var i int
	fmt.Println("i = ",i)
	//2.不定义类型让语言自行判断变量类型
	var num = 111.111
	fmt.Println("num = ",num)
	//3.省略var定义使用 :=进行定义
	//但是这个:一定不能省略
	//:= 的意义相当于 var name string      name = "haha"
	name := "haha"
	fmt.Println("name = ", name)
}

运行查看结果

C:\Users\g\go\src\awesomeProject>go run 1.go
i =  0
num =  111.111
name =  haha

多变量声明

和定义变量的方式相同
1.多个变量之间使用逗号进行分割

var n1,n2,n3 int
	fmt.Println(n1,n2,n3)

2.自行判断类型

var num,name,size = 111.111,"haha","big"
	fmt.Println(num,name,size)

3.最后也可以使用:=的方式

num,name,size := 111.111,"haha","big"
	fmt.Println(num,name,size)

变量的声明,初始化和赋值

声明:

var  变量名  数据类型
var     i           int

初始化变量
就是在声明变量的时候就给值

var  i  int = 11  //这个就是初始化
var  i  = 11  //也可以直接这样写  不用定义数据类型

赋值

var  i  int  //这个时候变量i默认为0
i = 1  //这一步进行赋值操作

程序中‘+’的使用

两边都为数字的时候为加法运算
两边为字符串的时候为拼接

package main

import "fmt"
func main() {

	i , j := 1 , 2 //都为数字
	r := i + j
	fmt.Println(r)

	str1 , str2 := "hello","world"  //都为字符串
	str3 := str1 + str2
	fmt.Println(str3)
}

运行结果

C:\Users\g\go\src\awesomeProject>go run 1.go
3
helloworld

数字类型

数字类型比较多,默认值都是 0。定义int类型时,默认根据系统类型设置取值范围,32位系统与int32的值范围相同,64位系统与int64的值范围相同。见下表:

在这里插入图片描述
在这里插入图片描述golang的整型分:有符号和无符号分别为 int和uint
一般的整型默认声明为int型

//如何查看类型
package main

import "fmt"
func main()  {
	n1 := 1
	fmt.Printf("n1 的类型为 %T",n1) //使用Printf做格式化输出  %T占位
}
[root@localhost demo1]# go run main.go 
n1 的类型为 int
//如何在程序中查看每个变量的大小和数据
package main

import (
	"fmt"
	"unsafe"  //额外的引入一个函数
)

func main()  {
	n1 := 1
	fmt.Printf("n1 的类型为 %T n1的大小为%d" ,n1,unsafe.Sizeof(n1))
}
[root@localhost demo1]# go run main.go 
n1 的类型为 int n1的大小为8

浮点类型

类型占用空间
单精度float324字节
双精度float648字节
package main

import "fmt"

func main() {

	price := 123.45
	fmt.Println(price)
	var num1 float32 = -0.00057
	var num2 float64 = -745613.4654165
	fmt.Println("num1=",num1,"num2=",num2)

//尾数部分可能会丢失,造成精度损失
//所以需要精度高的用float64
	var num3 float32 = -123.0000901
	var num4 float64 = -123.0000901
	fmt.Println("num3=",num3,"num4=",num4)
	//输出num3= -123.00009 num4= -123.0000901
}

字符类型

go语言中没有专门的字符类型,如果要存储单个字符一般用byte类型保存。

go的字符串由字节组成。

package main

import "fmt"

func main() {

	var c1 byte = 'a'
	var c2 byte = '0'
	fmt.Println(c1,c2)
	//输出97 48
//输出的事码值,不是字符的样子
}

如果想直接输出可以使用格式化输出或者变量定义的时候采用其他方式

fmt.Printf("%c %c",c1,c2)
//输出a 0

或者

c1,c2 := 'a',"0"
fmt.Println("c1 = ",c1,"c2 = ",c2)
//输出a 0

布尔类型

只允许true和false

if条件控制语句会用到
for循环会用到

package main

import (
	"fmt"
	"unsafe"
)

func main() {

	var b = false
	fmt.Println(b,unsafe.Sizeof(b))

}

golang基本数据类型的转换
go的不同类型的变量之间赋值事需要显示转换,go中的数据类型不能自动转换

基本语法
数据类型(需要转换的变量)

package main

import "fmt"

func main()  {
	var i int32 = 100
	//将int型转换成float
	var n1 float32 = float32(i)
	var n2 int8 = int8(i)
	var n3 float64 = float64(i)
	fmt.Println(i,n1,n2,n3)
//输出100 100 100 100
}

注:被转换的事变量存储的数据,变量本身的数据类型没有变化
即i的数据类型还是int32的 但是在转换中将100这个数据不断的修改类型

fmt.Printf("%T",i)
	//输出为int32

基本数据类型装string

使用fmt.Sprintf(表达式)
格式化字符串并返回

package main

import "fmt"

func main()  {
	var num1 int = 99
	var num2 float64 = 23.456
	var b bool = true
	var myChar byte = 'h'
	var str string
	str = fmt.Sprint( num1)
	fmt.Printf("str type %T str = %v \n",str,str)
	str = fmt.Sprint( num2)
	fmt.Printf("str type %T str = %v \n",str,str)
	str = fmt.Sprint( b)
	fmt.Printf("str type %T str = %v \n",str,str)
	str = fmt.Sprint( myChar)
	fmt.Printf("str type %T str = %v \n",str,str)
}

输出为

str type string str = 99  //类型已经转变
str type string str = 23.456
str type string str = true
str type string str = 104

使用strconv的包的函数

package main

import (
	"fmt"
	"strconv"
)
func main()  {
	var num1 int = 99
	var num2 float64 = 23.456
	var b bool = true
	var str string

	str = strconv.FormatInt(int64(num1),10)
	fmt.Printf("str type %T str=%q\n",str,str)
	str = strconv.FormatFloat(num2,'f',10,64)
	fmt.Printf("str type %T str=%q\n",str,str)
	str = strconv.FormatBool(b)
	fmt.Printf("str type %T str=%q\n",str,str)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值