当前位置:网站首页>分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
2022-08-08 19:48:00 【InfoQ】
整形 int
package main
import (
"fmt"
"math"
"unsafe"
)
// 有符号整型
func Integer() {
var num8 int8 = 127
var num16 int16 = 32767
var num32 int32 = math.MaxInt32
var num64 int64 = math.MaxInt64
var num int = math.MaxInt
fmt.Printf("num8的类型是 %T, num8的大小 %d, num8是 %d\n",
num8, unsafe.Sizeof(num8), num8)
fmt.Printf("num16的类型是 %T, num16的大小 %d, num16是 %d\n",
num16, unsafe.Sizeof(num16), num16)
fmt.Printf("num32的类型是 %T, num32的大小 %d, num32是 %d\n",
num32, unsafe.Sizeof(num32), num32)
fmt.Printf("num64的类型是 %T, num64的大小 %d, num64是 %d\n",
num64, unsafe.Sizeof(num64), num64)
fmt.Printf("num的类型是 %T, num的大小 %d, num是 %d\n",
num, unsafe.Sizeof(num), num)
}
// 无符号整型
func unsignedInteger() {
var num8 uint8 = 128
var num16 uint16 = 32768
var num32 uint32 = math.MaxUint32
var num64 uint64 = math.MaxUint64
var num uint = math.MaxUint
fmt.Printf("num8的类型是 %T, num8的大小 %d, num8是 %d\n",
num8, unsafe.Sizeof(num8), num8)
fmt.Printf("num16的类型是 %T, num16的大小 %d, num16是 %d\n",
num16, unsafe.Sizeof(num16), num16)
fmt.Printf("num32的类型是 %T, num32的大小 %d, num32是 %d\n",
num32, unsafe.Sizeof(num32), num32)
fmt.Printf("num64的类型是 %T, num64的大小 %d, num64是 %d\n",
num64, unsafe.Sizeof(num64), num64)
fmt.Printf("num的类型是 %T, num的大小 %d, num是 %d\n",
num, unsafe.Sizeof(num), num)
}
func main() {
Integer()
println("---------------------------------------")
unsignedInteger()
}
num8的类型是 int8, num8的大小 1, num8是 127
num16的类型是 int16, num16的大小 2, num16是 32767
num32的类型是 int32, num32的大小 4, num32是 2147483647
num64的类型是 int64, num64的大小 8, num64是 9223372036854775807
num的类型是 int, num的大小 8, num是 9223372036854775807
---------------------------------------
num8的类型是 uint8, num8的大小 1, num8是 128
num16的类型是 uint16, num16的大小 2, num16是 32768
num32的类型是 uint32, num32的大小 4, num32是 4294967295
num64的类型是 uint64, num64的大小 8, num64是 18446744073709551615
num的类型是 uint, num的大小 8, num是 18446744073709551615
%% 一个%字面量
%b 一个二进制整数值(基数为 2),或者是一个(高级的)用科学计数法表示的指数为 2 的浮点数
%c 字符型。可以把输入的数字按照 ASCII 码相应转换为对应的字符
%d 一个十进制数值(基数为 10)
%f 以标准记数法表示的浮点数或者复数值
%o 一个以八进制表示的数字(基数为 8)
%p 以十六进制(基数为 16)表示的一个值的地址,前缀为 0x,字母使用小写的 a-f 表示
%q 使用 Go 语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字
%s 字符串。输出字符串中的字符直至字符串中的空字符(字符串以’\0‘结尾,这个’\0’即空字符)
%t 以 true 或者 false 输出的布尔值
%T 使用 Go 语法输出的值的类型
%x 以十六进制表示的整型值(基数为十六),数字 a-f 使用小写表示
%X 以十六进制表示的整型值(基数为十六),数字 A-F 使用小写表示
浮点 float
package main
import (
"fmt"
"math"
)
func showFloat() {
var num1 float32 = math.MaxFloat32
var num2 float64 = math.MaxFloat64
fmt.Printf("num1的类型是%T,num1是%g\n", num1, num1)
fmt.Printf("num2的类型是%T,num1是%g\n", num2, num2)
}
func main() {
showFloat()
}
num1的类型是float32,num1是3.4028235e+38
num2的类型是float64,num1是1.7976931348623157e+308
package main
import (
"fmt"
//"math"
"reflect"
"strconv"
)
func showFloat() {
numF := 3.1415926
value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", numF), 64)
fmt.Println(reflect.TypeOf(value), value)
}
func main() {
showFloat()
}
float64 3.14
字符 byte/rune
package main
import (
"fmt"
//"math"
//"reflect"
"unsafe"
)
func showChar() {
var x byte = 65
var y uint8 = 65
fmt.Printf("x = %c\n", x) // x = A
fmt.Printf("y = %c\n", y) // y = A
}
func sizeOfChar() {
var x byte = 65
fmt.Printf("x = %c\n", x)
fmt.Printf("x 占用 %d 个字节\n", unsafe.Sizeof(x))
var y rune = 'A'
fmt.Printf("y = %c\n", y)
fmt.Printf("y 占用 %d 个字节\n", unsafe.Sizeof(y))
}
func main() {
showChar()
sizeOfChar()
}
x = A
y = A
x = A
x 占用 1 个字节
y = A
y 占用 4 个字节
字符串 string
package main
import (
"fmt"
)
func main() {
mystring := "hello\tgolang1.18"
fmt.Println(mystring)
}
布尔 bool
package main
import (
"fmt"
)
func showBool() {
a := true
b := false
fmt.Println("a=", a)
fmt.Println("b=", b)
fmt.Println("true && false = ", a && b)
fmt.Println("true || false = ", a || b)
}
func main() {
showBool()
}
a= true
b= false
true && false = false
true || false = true
数据运算
+ - * / %(求余) ++ --
== != > < >= <=
&& 所谓逻辑与运算符。如果两个操作数都非零,则条件变为真
|| 所谓的逻辑或操作。如果任何两个操作数是非零,则条件变为真
! 所谓逻辑非运算符。使用反转操作数的逻辑状态。如果条件为真,那么逻辑非操后结果为假
& 二进制与操作副本位的结果,如果它存在于两个操作数 (A & B) = 12, 也就是 0000 1100
| 二进制或操作副本,如果它存在一个操作数 (A | B) = 61, 也就是 0011 1101
^ 二进制异或操作副本,如果它被设置在一个操作数就是按位取非 (A ^ B) = 49, 也就是 0011 0001
&^ 二进制位清空&^ (A&^B)=48,也就是110000
<< 二进制左移位运算符。左边的操作数的值向左移动由右操作数指定的位数 A << 2 =240 也就是 1111 0000
>> 二进制向右移位运算符。左边的操作数的值由右操作数指定的位数向右移动 A >> 2 = 15 也就是 0000 1111
= 简单的赋值操作符,分配值从右边的操作数左侧的操作数 C = A + B 将分配A + B的值到C
+= 相加并赋值运算符,它增加了右操作数左操作数和分配结果左操作数 C += A 相当于 C = C + A
-= 减和赋值运算符,它减去右操作数从左侧的操作数和分配结果左操作数 C -= A 相当于 C = C - A
*= 乘法和赋值运算符,它乘以右边的操作数与左操作数和分配结果左操作数 C *= A 相当于 C = C * A
/= 除法赋值运算符,它把左操作数与右操作数和分配结果左操作数 C /= A 相当于 C = C / A
%= 模量和赋值运算符,它需要使用两个操作数的模量和分配结果左操作数 C %= A 相当于 C = C % A
<<= 左移位并赋值运算符 C <<= 2 相同于 C = C << 2
>>= 向右移位并赋值运算符 C >>= 2 相同于 C = C >> 2
&= 按位与赋值运算符 C &= 2 相同于 C = C & 2
^= 按位异或并赋值运算符 C ^= 2 相同于 C = C ^ 2
|= 按位或并赋值运算符 C |= 2 相同于 C = C | 2
基本数据的输入输出
package main
import (
"fmt"
)
func main() {
var x int
var y float64
fmt.Println("请输入一个整数,一个浮点类型:")
fmt.Scanln(&x, &y) //读取键盘的输入,通过操作地址,赋值给x和y 阻塞式
fmt.Printf("x的数值:%d,y的数值:%f\n", x, y)
fmt.Scanf("%d,%f", &x, &y)
fmt.Printf("x:%d,y:%f\n", x, y)
}
C:\Users\liuyue\www\tornado6>go run test.go
请输入一个整数,一个浮点类型:
1 3.14
x的数值:1,y的数值:3.140000
x:1,y:3.140000
package main
import (
"fmt"
)
func main() {
var x int
var y int
fmt.Println("请输入一个整数")
fmt.Scanln(&x)
fmt.Println("请再输入一个整数")
fmt.Scanln(&y)
sum := x + y
fmt.Printf("两数的和为:%d", sum)
}
C:\Users\liuyue\www\tornado6>go run test.go
请输入一个整数
1
请再输入一个整数
2
两数的和为:3
C:\Users\liuyue\www\tornado6>go build test.go
C:\Users\liuyue\www\tornado6>test.exe
请输入一个整数
1
请再输入一个整数
2
两数的和为:3
C:\Users\liuyue\www\tornado6>
结语
边栏推荐
猜你喜欢
“12306” 的架构到底有多牛逼?
图的几种存储方式
面试面到自闭,字节软件测试岗五轮面试,四个小时灵魂拷问...
虚假信息处理最新有何进展?KDD2022《打击错误信息和应对媒体偏见》教程,161页ppt
经验分享|低成本快节奏搭建企业知识管理系统的方法
进化的黑产 vs 进击的蚂蚁:支付宝的每一次点击,都离不开一张“图”的守护
Why Manufacturing Companies Should Deploy Digital Factory Systems
即将开幕!阿里云飞天技术峰会邀您一同探秘云原生最佳实践
疫情期间闲来无事,我自制了一个按钮展示框特效来展示我的博客
聚名十周年线上庆典正式开启,发送祝福即有好礼相赠~
随机推荐
信号与系统【x(t)*h(t)=y(t) 求h(t)】附matlab代码
PyTorch入门:(四)torchvision中数据集的使用
Which company is the best for futures account opening? It must be formal and safe
Ability in general, but it can be large horizontal jump freely?Where is the better?
Implement the entire process of Mock API with tools
书法家唐效奇
瑞芯微rk1126 平台部分jpeg图片解码程序挂掉的问题
Intel两大FPGA产品部署中国:性能升45%、功耗降40%
曲面着色器初试--地面轨迹模拟(部分细节不完善)
RADIUS服务器的演变过程
PX4-做飞控二次开发需要知道的事情-Cxm
wps表格怎么设置公式自动计算?wps表格设置公式自动计算的方法
Mei cole studio OpenHarmony equipment development training notes - the first learn notes
电脑win键没有反应(最全方案)
软件测试基础笔记
用 Antlr 重构脚本解释器
Generate captchas tools
软考中级网络工程师全面学习笔记第2版(5万字)+配套视频及课件
Wps文档云同步如何开启?Wps打开文档云同步的方法
方舟建筑代码指令大全