golang基础--类型与变量
2024-10-16 07:45:02
基础知识--类型与变量
基本类型
布尔型:bool
- 长度: 1字节
- 取值范围: false, true
- 注意事项: 不可以使用数字代表,不像 python中可是使用 1和0表示
整型: int/uint
- 根据运行平台可能是32位或者是64位
8位整型: int8/uint8
- 长度:1字节
- 取值范围:
- 128~127(有运算符号)
- 0-255 无符号
字节型: byte (uint8别名)
16位整型:int16/uint16
- 长度:2字节
- 取值范围: -32768~32767 / 0~65536
32位整型:int32(rune) /uint32
- 长度:4字节
- 取值范围:-2^32 /2 -2^32 / 2-1/0~2^32-1
64位整型:int64/uint64
- 长度:8字节
- 取值范围:-2^64 /2 -2^64 / 2-1/0~2^64-1
浮点型: float32/float64
- 长度:4/8字节
- 小数位:精度 7/15小数位
足够保存指针的32或64位整数型:uintptr
其他类型:
- array, struct ,string
引用类型:
- slice, map, chan(通道--高并发特有)
接口类型: inteface
函数类型:func
类型零值
零值并不等于空值,而是当变量被声明位某种类型后的默认值,通常情况下值类型的默认值为0,bool为false, string 为空字符串
package main
import "fmt"
func main(){
var a int
var b int32
var c float32
var d bool
var e string
var a1[] int
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e)
fmt.Println(a1)
}
/*output
0 //int
0 //int32
0 //float32
false //bool
// string 默认为空
[] //切片
*/
类型别名
顾名思义就是可以将类型名指向一个别名
// 类型别名
package main
import "fmt"
type (
byte int8
rune int32
文本 string // 可使用中文类型别名(不建议这样做,It's stupid!)
ByteSize int64 // 可以更加直观的描述类型
)
func main() {
var b 文本 //将string 类型定义别名为文本
b ="文本类型名"
fmt.Println(b)
}
// output : 文本类型名import "fmt"
多个变量的声明
注意多个变量赋值多种写法
//多个变量声明
package main import "fmt" var (
aaa = "hello"
sss,bbb = 1, 2 //自行推断类型
// ccc :=3是错误的,不可以省略var
) func main() {
//var a, b, c, d = 1, 2, 3, 4 //并行声明变量,省略int类型
//a, b, c, d := 1, 2, 3, 4 // 函数变量中可以省略var,全局变量必须使用var
a, _, c, d := 1, 2, 3, 4 // _可以忽略某一个值,实际应用于当函数有多个返回值时,忽略某一个不使用的值
fmt.Println(a)
//fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
变量类型转换
go中不存在隐式转换,所有的类型转化必须是显示的声明
转换只发生在两种相互兼容的类型之间
类型转换格式如下:
// 类型转换
package main import "fmt" func main() {
var a float32 = 100.1
fmt.Println(a)
b := int(a)
fmt.Println(b) //这种方式是可行,只存在精度的丢失
c :=bool(a) //这种方式是可行,只存在精度的丢失
fmt.Println(c)
} /*output
a-->100.1
b--->100 //丢失了精度
c--->cannot convert a (type float32) to type bool
*/
思考:数字如何变成字符串?
//int转string,并不是我们想达到的效果
package main import (
"fmt"
"strconv" //导入类型转换包
) func main() {
var a int = 65
b := string(a) //int 转string,输出的是UTF8码中,序号65位表示的是字母A
b1 := strconv.Itoa(a) //确实想要将int 65 转换成string 65,使用 strconv包
fmt.Println(b)
fmt.Println(b1)
} //output: A
//output: "65"
最新文章
- AD10的PCB设计规则
- js类型转化
- 手机GPS为什么能在室内定位?
- github 如何合并不同分支
- SAP ECC CO 配置
- iOS开发~UI布局(一)初探Size Class
- 浅谈 sql 中数据的约束
- notepad++之TextFX插件
- iOS中类方法的作用
- 设计模式-工厂方法模式(FactoryMethod)
- Linux内核等待队列
- 导入 Mysql 示例数据库 employees
- [转] struts.xml配置详解
- Java NIO使用及原理分析 (四)
- js 验证表单 js提交验证类
- Bug解决过程复盘
- F - 娜娜梦游仙境系列——多民族王国
- python来写打飞机
- 【阿里聚安全·安全周刊】Python库现后门 可窃取用户SSH信息|Facebook再曝300万用户数据泄露
- 20180824fpreadforasp.net单元格类型绑定细则
热门文章
- 设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。
- SQLSERVER无排序生成序号
- 添加外键式异常 1215-cannot add foreign key constranint
- python requests 简单实现易班登录,自动点赞,评论,发表
- OpenCV——SIFT特征检测与匹配
- C++之友元函数和友元类
- linux系统下php通过php_oci8扩展连接oracle数据库 Nginx
- Hadoop详细配置教程
- [SDOI2011]工作安排 BZOJ2245
- ABAP error:CONVT_NO_NUMBER