当前位置:首页 > 编程笔记 > 正文
已解决

Go语言的数据类型

来自网友在路上 155855提问 提问时间:2023-11-02 01:59:40阅读次数: 55

最佳答案 问答题库558位专家为你答疑解惑

基本语法——数据类型

一、基本数据类型

以下是go中可用的基本数据类型

1.1 布尔型bool

布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true

1.2 数值型

1、整数型

  • 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)

int和uint:根据底层平台,表示32或64位整数。除非需要使用特定大小的整数,否则通常应该使用int来表示整数。
大小:32位系统32位,64位系统64位。
范围:-2147483648到2147483647的32位系统和-9223372036854775808到9223372036854775807的64位系统。

2、浮点型

  • float32

IEEE-754 32位浮点型数

  • float64

IEEE-754 64位浮点型数

  • complex64

32 位实数和虚数

  • complex128

64 位实数和虚数

3、其他

  • byte

类似 uint8

  • rune

类似 int32

  • uint

32 或 64 位

  • int

与 uint 一样大小

  • uintptr

无符号整型,用于存放一个指针

1.3 字符串型

字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本

	var str stringstr = "Hello World"

1.4 数据类型转换:Type Convert

语法格式:Type(Value)

常数:在有需要的时候,会自动转型

变量:需要手动转型 T(V)

注意点:兼容类型可以转换

二、 复合类型(派生类型)

1、指针类型(Pointer)
2、数组类型
3、结构化类型(struct)
4、Channel 类型
5、函数类型
6、切片类型
7、接口类型(interface)
8、Map 类型

运算符

表达式:(a + b) * c

a,b,c叫做操作数

+,*,叫做运算符

一、运算符

1.1 算术运算符

+ - * / %(求余) ++ --

1.2 关系运算符

== != > < >= <=

1.3 逻辑运算符

运算符描述&&所谓逻辑与运算符。如果两个操作数都非零,则条件变为真||所谓的逻辑或操作。如果任何两个操作数是非零,则条件变为真!所谓逻辑非运算符。使用反转操作数的逻辑状态。如果条件为真,那么逻辑非操后结果为假

1.4 位运算符

ABA&BA|BA^B00000010111111010011

这里最难理解的就是^了,只要认为AB两者都相同的时候,为0,其他都为1

假设A为60,B为13

运算描述示例&二进制与操作副本位的结果,如果它存在于两个操作数(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

1.5 赋值运算符

运算符描述示例=简单的赋值操作符,分配值从右边的操作数左侧的操作数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

1.6优先级运算符优先级

有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级运算符7~ ! ++ –6* / % << >> & &^5+ - ^4== != < <= >= >3<-2&&1||

当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。


写在最后

下面是一些示例代码,演示了Golang中常见的数据类型:

  1. 字符串(string):
package mainimport "fmt"func main() {str := "Hello, world!"fmt.Println(str) // 输出:Hello, world!
}
  1. 整型(int):
package mainimport "fmt"func main() {num := 42fmt.Println(num) // 输出:42
}
  1. 浮点型(float):
package mainimport "fmt"func main() {num := 3.14fmt.Println(num) // 输出:3.14
}
  1. 布尔型(bool):
package mainimport "fmt"func main() {isTrue := truefmt.Println(isTrue) // 输出:true
}
  1. 数组(array):
package mainimport "fmt"func main() {arr := [3]int{1, 2, 3}fmt.Println(arr) // 输出:[1 2 3]
}
  1. 切片(slice):
package mainimport "fmt"func main() {slice := []int{1, 2, 3}fmt.Println(slice) // 输出:[1 2 3]
}
  1. Map(map):
package mainimport "fmt"func main() {m := map[string]int{"a": 1, "b": 2}fmt.Println(m) // 输出:map[a:1 b:2]
}
  1. 结构体(struct):
package mainimport "fmt"type Person struct {name stringage  int
}func main() {p := Person{name: "John", age: 30}fmt.Println(p) // 输出:{John 30}
}
  1. 接口(interface):
package mainimport ("fmt""math"
)type Shape interface {Area() float64
}type Rectangle struct {width  float64height float64
}func (r Rectangle) Area() float64 {return r.width * r.height
}type Circle struct {radius float64
}func (c Circle) Area() float64 {return math.Pi * c.radius * c.radius
}func main() {shapes := []Shape{Rectangle{3, 4}, Circle{2}}for _, shape := range shapes {fmt.Println(shape.Area())}
}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Go语言的数据类型":http://eshow365.cn/6-29803-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!