海南平台网站建设企业,金阊做网站价格,wordpress 数据库 类型,499全包网站建设文章目录 go基本数据类型bool类型数值型字符字符串 数据类型的转换运算符和表达式1. 算数运算符2.关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 其他运算符运算符优先级转义符 go基本数据类型
bool类型
布尔型的值只可以是常量 true 或者 false。⼀个简单的例⼦#… 文章目录 go基本数据类型bool类型数值型字符字符串 数据类型的转换运算符和表达式1. 算数运算符2.关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 其他运算符运算符优先级转义符 go基本数据类型
bool类型
布尔型的值只可以是常量 true 或者 false。⼀个简单的例⼦var b bool true
数值型
整数型
⼆进制和位数的关系以及 int 和 uint 的关系
int8 有符号 8 位整型 (-128 到 127) ⻓度8bit int16 有符号 16 位整型 (-32768 到 32767) int32 有符号 32 位整型 (-2147483648 到 2147483647) int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) uint8 ⽆符号 8 位整型 (0 到 255) 8位都⽤于表示数值 uint16 ⽆符号 16 位整型 (0 到 65535) uint32 ⽆符号 32 位整型 (0 到 4294967295) uint64 ⽆符号 64 位整型 (0 到 18446744073709551615)
浮点型
float32 32位浮点型数 float64 64位浮点型数
其他 byte 等于 uint8 rune 等于 int32 uint 32 或 64 位
字符
Golang中没有专⻔的字符类型如果要存储单个字符(字⺟)⼀般使⽤byte来保存。 字符串就是⼀串固定⻓度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的⽽Go的字符串不同它是由字节组成的。
package mainimport (fmt)func main() {var a bytea a//输出ascii对应码值 。。 这⾥说明⼀下什么是ascii码fmt.Println(a)fmt.Printf(a%c, a)
}字符常量只能使⽤单引号括起来例如var a byte ‘a’ var a int ‘a’
package main
import (fmt
)
func main() {var a bytea a//输出ascii对应码值 。。 这⾥说明⼀下什么是ascii码fmt.Println(a)fmt.Printf(a%c, a)
}字符本质是⼀个数字 可以进⾏加减乘除
package main
import (fmtreflect
)
func main() {a : a//这⾥注意⼀下 1. a1可以和数字计算 2.a1的类型是32 3. int类型可以直接变成字符fmt.Println(reflect.TypeOf(a1))fmt.Printf(a1%c, a1)
}字符串
字符串就是⼀串固定⻓度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语⾔的字符串的字节使⽤ UTF-8 编码标识 Unicode ⽂本。
数据类型的转换
valueOfTypeB typeB(valueOfTypeA)
a : 5.0
b : int(a)
type IT int
var a IT 5
b : int(5)
c : IT(b)
var a int32 1
var b int64 3
b int64(a)
fmt.Println(a, b)int 转换为字符串Itoa()
println(a strconv.Itoa(32)) string 转换为 intAtoi()
i,_ : strconv.Atoi(3)
println(3 i)
i,err : strconv.Atoi(a)
if err ! nil {println(converted failed)
}Parse 类函数⽤于转换字符串为给定类型的值ParseBool()、ParseFloat()、ParseInt()、ParseUint()。
b, err : strconv.ParseBool(true)
f, err : strconv.ParseFloat(3.1415, 64)
i, err : strconv.ParseInt(-42, 10, 64)
u, err : strconv.ParseUint(42, 10, 64)ParseInt() 和 ParseUint() 有 3 个参数
func ParseInt(s string, base int, bitSize int) (i int64, err error)
func ParseUint(s string, base int, bitSize int) (uint64, error)说明
bitSize 参数表示转换为什么位的 int/uint有效值为 0、8、16、32、64。当 bitSize0 的时候表示转换为 int 或 uint 类型。例如 bitSize8 表示转换后的值的类型为 int8 或 uint8。base 参数表示以什么进制的⽅式去解析给定的字符串有效值为 0、2-36。当 base0 的时候表示根据string 的前缀来判断以什么进制去解析 0x 开头的以 16 进制的⽅式去解析 0 开头的以 8 进制⽅式去解析其它的以 10 进制⽅式解析
将给定类型格式化为 string 类型FormatBool()、FormatFloat()、FormatInt()、FormatUint()。
s : strconv.FormatBool(true)
s : strconv.FormatFloat(3.1415, E, -1, 64)
s : strconv.FormatInt(-42, 16)
s : strconv.FormatUint(42, 16)第⼆个参数 base 指定将第⼀个参数转换为多少进制有效值为 2base36 。当指定的进制位⼤于 10 的时候超出 10 的数值以 a-z 字⺟表示。例如 16 进制时10-15 的数字分别使⽤ a-f 表示17 进制时10-16 的数值分别使⽤ a-g 表示。
FormatFloat() 参数众多
func FormatFloat(f float64, fmt byte, prec, bitSize int) stringbitSize 表示 f 的来源类型32float32、64float64会据此进⾏舍⼊。fmt 表示格式‘f’-ddd.dddd、‘b’-ddddp±ddd指数为⼆进制、‘e’-d.dddde±dd⼗进制指数、‘E’-d.ddddE±dd⼗进制指数、‘g’指数很⼤时⽤’e’格式否则’f’格式、‘G’指数很⼤时⽤’E’格式否则’f’格式。prec 控制精度排除指数部分对’f’、‘e’、‘E’它表示⼩数点后的数字个数对’g’、‘G’它控制总的数字个数。如果 prec 为 - 1则代表使⽤最少数量的、但⼜必需的数字来表示 f。
运算符和表达式
1. 算数运算符 2.关系运算符 !
3. 逻辑运算符 这个和 python 不⼀样python 中使⽤ and or 来连接 package main
import fmt
func main() {var a bool truevar b bool falseif ( a b ) {fmt.Printf(第⼀⾏ - 条件为 true\n )}if ( a || b ) {fmt.Printf(第⼆⾏ - 条件为 true\n )}a falseb trueif ( a b ) {fmt.Printf(第三⾏ - 条件为 true\n )} else {fmt.Printf(第三⾏ - 条件为 false\n )}if ( !(a b) ) {fmt.Printf(第四⾏ - 条件为 true\n )}
}4. 位运算符
位运算符对整数在内存中的⼆进制位进⾏操作。 下表列出了位运算符 , |, 和 ^ 的计算 假定 A 60; B 13; 其⼆进制数转换为
A 0011 1100 B 0000 1101
AB 0000 1100 A|B 0011 1101 A^B 0011 0001
Go 语⾔⽀持的位运算符如下表所示。假定 A 为 60B 为 13 package main
import fmt
func main() {var a uint 60 var b uint 13 var c uint 0 c a b fmt.Printf(第⼀⾏ - c 的值为 %d\n, c )c a | b fmt.Printf(第⼆⾏ - c 的值为 %d\n, c )c a ^ b fmt.Printf(第三⾏ - c 的值为 %d\n, c )c a 2 fmt.Printf(第四⾏ - c 的值为 %d\n, c )c a 2 fmt.Printf(第五⾏ - c 的值为 %d\n, c )
}5. 赋值运算符
下表列出了所有 Go 语⾔的赋值运算符。 package mainimport fmt
func main() {var a int 21var c intc afmt.Printf(第 1 ⾏ - 运算符实例c 值为 %d\n, c )c afmt.Printf(第 2 ⾏ - 运算符实例c 值为 %d\n, c )c - afmt.Printf(第 3 ⾏ - - 运算符实例c 值为 %d\n, c )c * afmt.Printf(第 4 ⾏ - * 运算符实例c 值为 %d\n, c )c / afmt.Printf(第 5 ⾏ - / 运算符实例c 值为 %d\n, c )c 200;c 2fmt.Printf(第 6⾏ - 运算符实例c 值为 %d\n, c )c 2fmt.Printf(第 7 ⾏ - 运算符实例c 值为 %d\n, c )c 2fmt.Printf(第 8 ⾏ - 运算符实例c 值为 %d\n, c )c ^ 2fmt.Printf(第 9 ⾏ - ^ 运算符实例c 值为 %d\n, c )c | 2fmt.Printf(第 10 ⾏ - | 运算符实例c 值为 %d\n, c )
}6. 其他运算符 package mainimport fmt
func main() {var a int 4var b int32var c float32var ptr *intfmt.Printf(第 1 ⾏ - a 变量类型为 %T\n, a );fmt.Printf(第 2 ⾏ - b 变量类型为 %T\n, b );fmt.Printf(第 3 ⾏ - c 变量类型为 %T\n, c );ptr a fmt.Printf(a 的值为 %d\n, a);fmt.Printf(*ptr 为 %d\n, *ptr);
}运算符优先级
有些运算符拥有较⾼的优先级⼆元运算符的运算⽅向均是从左⾄右。下表列出了所有运算符以及它们的优先级由上⾄下代表优先级由⾼到低 当然你可以通过使⽤括号来临时提升某个表达式的整体运算优先级。 package mainimport fmtfunc main() {var a int 20var b int 10var c int 15var d int 5var e int;e (a b) * c / d; fmt.Printf((a b) * c / d 的值为 : %d\n, e );e ((a b) * c) / d; fmt.Printf(((a b) * c) / d 的值为 : %d\n , e );e (a b) * (c / d); fmt.Printf((a b) * (c / d) 的值为 : %d\n, e );e a (b * c) / d; fmt.Printf(a (b * c) / d 的值为 : %d\n , e );
}转义符