Go语言基础——数据类型和运算符

Go语言基础——数据类型和运算符

基础数据类型

  • 在GO语言中,还有很多其它的类型,如下:

在这里插入图片描述

布尔类型
  • 布尔类型的变量取值要么是真(true),要么是假(false),用bool关键字来进行定义。

例:

package main

import "fmt"

func main() {
	/* var a bool
	//bool类型一般用于条件判断
	a = true
	fmt.Println(a)  */

	//自动推导类型创建bool类型变量
	a := true
	//fmt.Println(a)
	fmt.Printf("%T\n", a)

	b := 10
	fmt.Printf("%T\n", b)
}
  • %t是一个占位符,表示输出一个变量对应的数据类型
整型
var a int = 10
b := 10
  • int类型会根据操作系统位数不同在内存中占的字节也不同
  • 在64位操作系统下定义整型变量:int64 64(单位:位)
浮点型
  • 浮点型数据分为:单精度浮点型 float32(小数位数为7位),双精度浮点型 float64(小数位数为15位)
  • float64比float32更精确
  • 通过自动推导类型创建的浮点型变量,默认类型我float64

例:

func main() {

	var a float64 = 1234.456
	//保留六位小数数据更精准
	fmt.Printf("%f\n", a)

}

字符类型
  • byte字符类型,同时也是uint8的别名
func main() {

	var a byte = 'a'
	//所以的字符都对应ASCII中的整型数据
	//fmt.Println(a)
	fmt.Printf("%c",a)
}
  • %c是一个占位符,表示打印输出一个字符
  • 计算机不能直接存储字符类型,只能转成数字存储。
  • 计算机是根据’ASCII’码来存储。

将小写字母转换成大写字母输出

func main() {

	var a byte = 'a'
	fmt.Printf("%c",a-32)
}
转义字符
  • \n换行
  • \"表示一个英文半角的双引号
  • \0对应ASCII值为0,用于字符串的结束标准
  • \t表示一个tab键的空格,一次跳8个空格
字符串类型
  • 用单引号括起来的单个字符是字符类型,用双引号括起来的字符是字符串类型。

例:

func main() {

	var a string = "blank"
	fmt.Printf("%s", a)
}

  • len函数:用来计算字符串字符个数,不包括\0,返回值为int类型

例:

func main() {

	a := "hello world"
	count := len(a)
	fmt.Println(count)
}

注:在go语言中,一个汉字占3个字节,为了和linux进行统一处理

  • 字符串连接

例:

func main() {

	str1 := "CSDN:"
	str2 := "DTRblank"
	str3 := str1 + str2
	fmt.Println(str3)
}

fmt输出输入

  • go语言中的格式化输入输出:

在这里插入图片描述

  • 二进制不能在go语言中直接表示
  • 八进制数据是以0开头,最大值为7
  • 十六进制数据是以0x开头

常量

  • 常量存储一直不会发生变化的数据
  • 常量可以参与程序的计算
func main() {
	//常量的定义
	const a int = 10
	b := a + 10
	fmt.Println(a)
}
  • 常量不允许左值赋值
a = a + 10  //err
a = 100  //err
  • go语言中常量的地址不允许访问
  • 常量必须定义

例:

package main

import "fmt"

func main() {
	//计算圆的面积和周长
	// PI 3.14
	const PI float64 = 3.14
	var r float64
	fmt.Scan(&r)

	s := PI * r * r
	l := 2 * PI * r

	fmt.Printf("面积:%.2f\n", s)
	fmt.Printf("面积:%.2f\n", l)
}

iota枚举

  • 常量声明可以使用iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。
  • 在定义iota枚举时,可以自定义赋值
func main() {
	//iota枚举
	const(
		a = iota  //0
	)
	fmt.Printf("a=%d\n",a)

}

注:在一个const声明语句中,在第一个声明的常量所在的行,iota将会被置为0,然后在每一个有常量声明的行加一。

运算符

算术运算符

在这里插入图片描述
例:

func main() {
	a := 10
	a++  //11

	fmt.Println(a)
}
  • a++ = a + 1

注:
1.取余运算符除数不能为0
2.取余运算符不能对浮点型使用
3.GO语言中没有前自增,这是与其它编程语言不同的地方。
4.自增自减可以对浮点型进行运算,但是不能对常量进行自增自减运算
5.自增自减不能出现在表达式中。二义性,在不同操作系统中运算方式不同,结果可能会产生偏差。

例:

a = a ++  + a--   //err
类型转换
  • 数据类型(变量)
  • 数据类型(表达式)

例:

func main() {
	a, b, c := 0, 0, 0
	fmt.Scan(&a, &b, &c)

	sum := a + b + c
	fmt.Println(sum)
	fmt.Printf("%.2f", float64(sum)/3)
}
  • int8 --> int16 --> int32 -->int64
  • float32–> float64
  • 在类型转换时建议低类型转成高类型,保证数据精度
  • 高类型转换低类型,可能会丢失精度,数据溢出,符号发生变化

注:Go语言中不允许隐式转换,所有类型转换必须显式声明(强制转换),而且转换只能发生在两种相互兼容的类型之间

例:

func main() {
	var ch byte = 79
	//var a int = ch //err
	var a int = int(ch)
}
赋值运算符
  • 赋值运算符 =
  • =号是赋值运算符,不是数学义意上的相等
    在这里插入图片描述
关系运算符
  • 关系运算的结果是布尔类型的。
  • bool值只有两个。真:true,假:false
  • GO语言中常见的关系运算符如下:
    在这里插入图片描述
逻辑运算符
  • 有逻辑运算符连接的表达式叫做逻辑表达式
  • 逻辑表达式的结果同样也是bool类型
  • 常见的逻辑运算符如下:
    在这里插入图片描述
  • 逻辑与 && (表达式1&&表达式2) 同真为真,其余为假
    在这里插入图片描述
  • 逻辑或 ||(表达式1&&表达式2) 同假为假,其余为真
    在这里插入图片描述
  • 逻辑非 ! (表达式1&&表达式2) 非真为假,非假为真
    在这里插入图片描述
    注:逻辑与的优先级高于逻辑或
其他运算符

在这里插入图片描述

运算符优先级
  • 一元运算符(一些只需要一个操作数的运算符称为一元运算符(或单目运算符)。)拥有最高的优先级,二元运算符的运算方向均是从左至右。
  • 下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值