赞
踩
变量的定义、赋值和使用
var i int // var 变量名 数据类型
var j float32
i = 10
fmt.Println(i)
注意事项:
var i int
i = 10
// 等价于
i := 10 // 类型推导,无需指定变量类型
一次性声明多个变量:
var n1,n2,n3 int // 一次性声明三个变量
var n1,name,n3 = 100,"tom",1000
n1,name,n3 := 100,"tom",1000 // 类型推导,无需指定变量类型
全局变量的声明:
在go
中在函数外声明的变量都是全局变量
// 一次性定义多个全局变量
var n4 = 300
var n5 = 500
var (n1 = 300
n2 = 400
name = "go"
)
func main(){
}
注意事项:
在同一作用域内变量的数据类型不能被改变,但是可以强转之后复制给其他类型变量
变量在同一个作用域内不能重名,不能重复定义
变量的三要素:变量名、变量值、数据类型
默认值:如果变量没有赋初值,编译器会使用默认值,如int为0,字符串为空,浮点类型为0,布尔值为false
整数类型
int int8 int16 int32 int64(uint无符号)
int 在32位os中是32位,在64位os中是64位
rune
类型,等价于int32,其表示一个unicode
码
// 使用rune类型来存储中文
var name rune = '中'
// 通过Printf来格式化输出
fmt.Printf("%c", name)
浮点类型,浮点值的类型默认为float64
float32 float64
没有专门的字符型,使用byte来保存单个字符
注意事项:
byte
等价于uint8
go
语言中编码采用utf-8
编码。Printf
)而使用(Println
)输出则直接输出UTF-8码值。 只能取true或者false,占一个字节
字符串是固定长度的字符连接起来的字符序列,go
中的字符串由字节组成。
Go语言的字符串的字节使用UTF-8编码来表示Unicode字符
注意事项
查看数据类型和变量所占用字节数
import ( "fmt" "unsafe" ) func main() { // 通过Printf格式化输出函数 来查看数据类型 var chr byte = 'a' fmt.Printf("%c,%T", chr, chr) // 格式化输出chr(以字符输出),并查看数据类型 /* output:a,uint8 */ // 通过unsafe包中的Sizeof方法可以获取到变量的占用的字节数 fmt.Printf("chr 占用的字节数:%d",unsafe.Sizeof(chr)) /* chr 占用的字节数:1 */ }
Go中的数据类型需要显示转换(强转)
必须要需要强制转换,所以两个变量在进行运算时需要注意变量类型是否匹配。
转换的基本语法:T(v),将值v转化为T类型,低精度向高精度转换同样需要。
var i int32 = 100
var j float32 = float32(i)
var k int64 = int64(i)
注意事项:
var intArr1 [5]int = [5]int{1, 33, 3, 45, 16}
sum := 0
for _, val := range intArr1 {
sum += val
}
fmt.Println(sum, float64(sum)/float64(len(intArr1)))
基本数据类型转string
fmt.Sprinf()
方法转换 返回转化后的字符串
var iii int = 32
str = fmt.Sprintf("%d", iii)
fmt.Printf("%T", str)
strconv
包中的函数var iii int = 32
str = fmt.Sprintf("%d", iii)
fmt.Printf("%T", str)
str2 = strconv.FormatInt(int64(iii), 10) // 将10进制的iii转化成字符串
fmt.Println(str)
// FormatFloat(floatnums,'f',10,64):将floatnums这个64位的小数值转化成字符串,小数保留10位,输出格式为f(还可以以e,科学计数法方式输出)
// FormatBool()
// Itoa(int),接收int类型,数字转string
string转基本数据类型
strconv
包中下面四个函数来进行转换 返回值是两个,一个是值还一个错误变量。
注意事项:
String转基本数据类型:
i
,其地址为&i
var i int = 10 // 定义整型
var p *int = &i // 定义一个int类型指针变量。该类型(int)需要和所指向的变量地址存储的类型对应
fmt.Println("address of i is ",p)
fmt.Println("The address of pointer p is",&p)
fmt.Println("The value pointed to by the pointer p is",*p)
/*
output:
address of i is 0xc0000aa058
The address of pointer p is 0xc0000ce018
The value pointed to by the pointer p is 10
*/
通过指针修改变量值
*p = 13
fmt.Println("The value changed of i is ,", i)
注意事项:
var a int32 = 300
// var ptr *float32 = &a 无法将int类型的变量a的地址赋值给float32类型的指针变量ptr
var b float32 = float32(a) // 需要进行强制转换
var ptr *float32 = &b
值类型和引言类型的使用特点:
Golang
中没有privacy
、public
等关键字。赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。