Go 数据结构

Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。 基础数据类型包括: 基础类型: - 布尔型、整型、浮点型、复数型、字符型、字符串型、错误类型。 复合数据类型包括: - 指针、数组、切片、字典、通道、结构体、接口。 基础数据类型 布尔值和布尔表达式 布尔类型的变量取值结果要么是真,要么是假,用bool关键字进行定义 布尔类型默认值为 false 指定格式的输出 %t 语法 描述/结果 !b 逻辑非操作符 b值为true 则 操作结果为false a || b 短路逻辑或,只要布尔值 a b 中任何一个为true表达式结果都为true a && b 短路逻辑与,两个表达式a b都为true,则整个表达式结果为true x > y 表达式x的值小于表达式Y的值,则表达式的结果为true 数值类型 go语言提供了大内置的数值类型,标准库也提供了big.Int类型的整数,和big.Rat类型的有理数,这些都是大小不限(只限于机器内存) 整型 GO语言提供了11种整型,包含5种有符号,和5种无符号的与一种用于存储指针的整数类型。Go语言允许使用byte来作为无符号uint8类型的同义词,在使用单个字符时提倡使用rune来替代 int32 类型 存储空间 取值范围 byte 8-bit 同uint8 int 系统决定 依赖不通平台实现,32位操作系统为int32的值范围,64位操作系统为int64的值范围 int8 8-bit [-128, 127] ,表示 UTF-8 字符串的单个字节的值,对应 ASCII 码的字符值 int16 16-bit [-32678, 32767] int32 32-bit [2147483648, 2147483647] int64 64-bit [-9223372036854775808 , 9223372036854775807] rune 32-bit 同uint32,表示 单个 Unicode 字符 uint 系统决定 依赖不通平台下的实现,可以是uint32或uint64 uint8 8-bit uint16 16-bit [0, 65535] uint32 32-bit [0, 4294967295] uint64 64-bit [0, 18446744073709551615] uintptr 系统决定 一个可以恰好容纳指针值得无符号整数类型(32位操作系统为uint32的值范围,64位系统为uint64的值范围) 浮点类型 Go语言提供了两种类型的浮点类型和两种类型的复数类型,...

 ·  · 

Go 运算符

算术运算符 运算符 示例 结果 + 10 + 5 15 - 10 - 5 5 * (除数不能为0) 10 * 5 50 / 10 / 5 2 % (除数不能为0) 10 % 3 1 ++ a = 0; a++ a = 1 – a = 2; a– a = 1 总结 除法/取余运算除数不能为0 只有后自增/减,没有前自增/减。没有 ++a 或 --a 只有 a++ 或 a-- 输入半径,计算圆的面积和周长并打印出来(PI为3.14) go 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package main import "fmt" func main() { const PI = 3....

 ·  · 

Go每日一库 - 时间格式化

该文可以快速在Go语言中获得时间的计算。 在Go中获取时间 如何获取当前时间 go 1 2 3 4 now := time.Now() fmt.Printf("current time is :%s", now) current time is :2009-11-10 23:00:00 +0000 UTC m=+0.000000001 如何获取UNIX Timestamp go 1 2 cur_time := time.Now().Unix() fmt.Printf("current unix timestamp is :%v\n", cur_time ) 如何获取当日0:00:00 0:00:00 go 1 2 3 4 5 now := time.Now() date := time.Date(now.Year(), now.Month(), now.Day(),0, 0, 0, 0, time.Local) fmt.Printf("date is :%s", date) date is :2021-04-13 00:00:00 +0800 如何获取时区时间 标准时间 time....

 ·  · 

Go每日一库 - 使用go操作dbus

github https://github.com/godbus/dbus 增加一个端口 go 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package main import ( "github.com/godbus/dbus/v5" ) func main() { cli, err := dbus.SystemBus() if err != nil { panic(err) } obj := cli.Object("org.fedoraproject.FirewallD1", "/org/fedoraproject/FirewallD1") call := obj.Call("oorg.fedoraproject.FirewallD1.zone.addPort", 0, "public", "81", "tcp", "30000") if call.Err != nil { panic(call.Err) } } go-dbus 简单教程 https://blog.csdn.net/mathmonkey/article/details/38095289

 ·  · 

Go面向对象

所谓的面向对象其实就是找一个专门做这个事的人来做,不用关心具体怎么实现的。所以说,面向过程强调的是过程,步骤。而面向对象强调的是对象,也就是干事的人。 Go语言:面向对象语言特性 方法 嵌入 接口 没有类 支持类型。 特别是, 它支持structs。 Structs是用户定义的类型。 Struct类型(含方法)提供类似于其它语言中类的服务。 Structs 一个struct定义一个状态。 这里有一个strudent struct。 它有一个Name属性和一个布尔类型的标志Real,告诉我们它是一个真实的strudent还是一个虚构的strudent。 Structs只保存状态,不保存行为。 go 1 2 3 4 type Creature struct { Name string Real bool } 为结构体添加方法 方法是对特定类型进行操作的函数。 它们有一个接收器条款,命令它们对什么样的类型可进行操作。 这里是一个Hello()方法,它可对student结构进行操作,并打印出它们的状态: go 1 2 3 func (s Student) Hello() { fmt.Printf("Name: '%s', Real: %t\n", s.Name, s.Real) } func (s Student) func_name(){} 这是一个不太常见的语法,但是它非常的具体和清晰,不像this的隐喻性。 一般在定义方法时,需要定义为结构体的指针,值类型的在修改结构体属性时,无法修改其内容 go 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package main import "fmt" type human struct { Name string Real bool } type Student struct { human Id int } func (h human) Hello() { fmt....

 ·  ·