Golang 入门笔记更多Golang资料包:扫码进入Github 1. 算术运算符 算数运算符就是对数值类型的变量进行运算的,比如,加减乘除。在Go中运用非常的多 算数运算符 除法演示 //说明,如果运算的数都是整数,那么除后,将会去除小数位 fmt.Println(10 / 4) //2 var n1 float32 = 10 / 4 fmt.Println(n1) //2 //如果我们希望保留小数,那么就需要有浮点数参与运算 答案代码 2. 关系运算符 基本介绍 1. 关系运算符的结果都是 bool 类型,要么是 true , 要么是 false 2. 关系表达式,经常在 if 结构的条件中或者循环结构的条件中 关系运算法(比较运算符) 关系运算符表格 案例代码 细节说明 1. 关系运算符的结果都是 bool 类型, 也就是要么是 true, 要么是 false 2. 关系运算符组成的表达式,我们称为关系表达式: 关系运算符组成的表达式,我们称为关系表达式: a > b 3.比较运算符 “==” 不能写成 “=” !! 3. 逻辑运算符 用于连接多个条件(一般来讲及时关系表达式),最终的结果也就是一个 bool 值 逻辑运算符 代码演示 1. && 也叫短路与; 如果第一个条件为 false , 则第二个条件不会判断,最终结果为 false 变量 语法基础 Hello World 语法基础 组成 关键字 标识符0 码力 | 2 页 | 511.29 KB | 1 年前3
Go 入门指南(The way to Go)性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 常量 4.4 变量 4.5 基本类型和运算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 时间和日期 4.9 指针 - 2 - 本文档使用 书栈(BookStack.CN) 构建 第5章:控制结构 5 书栈(BookStack.CN) 构建 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 常量 4.4 变量 4.5 基本类型和运算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 时间和日期 4.9 指针 第4章:基本结构和基本数据类型 - 52 - 本文档使用 书栈(BookStack.CN) )开头,然后紧跟着 0 个或 多个字符或 Unicode 数字,如:X56、group1、_x23、i、өԑ12。 以下是无效的标识符: 1ab(以数字开头) case(Go 语言的关键字) a+b(运算符是不允许的) _ 本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都 可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个0 码力 | 466 页 | 4.44 MB | 1 年前3
Go 入门指南(The way to Go)后紧跟着 0 个或多个字符或 Unicode 数字,如:X56、group1、_x23、i、өԑ12。 以下是无效的标识符: 1ab(以数字开头) case(Go 语言的关键字) a+b(运算符是不允许的) Go入门指南 - 30 - 本文档使用 看云 构建 _ 本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任 何类型都可以赋值给它),但 make new nil panic uint64 print println real recover string true uint uint8 uintptr 程序一般由关键字、常量、变量、运算符、类型和函数组成。 程序中可能会使用到这些分隔符:括号 () ,中括号 [] 和大括号 {} 。 程序中可能会使用到这些标点符号: . 、 , 、 ; 、 : 和 … 。 程序的代码通过语句来实现结构化。每个语句不需要像 部的同名变量将会暂时隐藏(结束内部代码块的执行后隐藏的外部同名变量又会出现,而内部同名变量则 被释放),你任何的操作都只会影响内部代码块的局部变量。 变量可以编译期间就被赋值,赋值给变量使用运算符等号 = ,当然你也可以在运行时对变量进行赋值操 作。 示例: a = 15 b = false 一般情况下,只有类型相同的变量之间才可以相互赋值,例如: Go入门指南 - 44 - 本文档使用0 码力 | 380 页 | 2.97 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a什么是类型不确定值、类型推导、赋值、以及如何声明变量和具名常量。 上面的示例程序中使用了很多操作符,比如第17和19行的小于比较符<,第36 行的等于比较符==,还有第20和36行的加法运算符+。 第35行中的+不是一个 运算符,它是一个字符串字面量中的一个字符。 一个使用操作符的操作中涉 及到的值称为操作值(有时也可称为运算数)。 请阅读常用操作符(第8章) 以获取更多关于操作符的信息。 更多操作符将在后续其它文章中介绍。 在Go代码中,如果某处需要一个特定类型的值并且一个类型不确定值可以表 示为此特定类型的值, 则此类型不确定值可以使用在此处。Go编译器将此类 型不确定值视为此特定类型的类型确定值。 这种情形常常出现在运算符运 算、函数调用和赋值语句中。 有些场景对某些类型不确定值并没有特定的类型要求。在这种情况下,Go编 译器将这些类型不确定值视为它们各自的默认类型的类型确定值。 上述两条类型推断规则可以被视为隐式转换规则。 若干个常量描述。 上面的例子中含有4个常量声明。除了第3个,其它的常量 声明中都各自只有一个常量描述。 第3个常量声明中有4个常量描述。 在上面的例子中,符号*是一个乘法运算符, 符号!是一个布尔取否运算符。 运算符将在下一篇文章(第8章)中详述。 常量声明中的等号=表示“绑定”而非“赋值”。 每个常量描述将一个或多个字面 量绑定到各自对应的具名常量上。 或者说,每个具名常量其实代表着一个字0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a请阅读常量和变量(第7章)以获取什么是 类型不确定值、类型推导、赋值、以及如何声明变量和具名常量。 上面的示例程序中使用了很多操作符,比如第17和19行的小于比较符<,第36行 的等于比较符==,还有第20和36行的加法运算符+。 第35行中的+不是一个运算 符,它是一个字符串字面量中的一个字符。 一个使用操作符的操作中涉及到的 值称为操作值(有时也可称为运算数)。 请阅读常用操作符(第8章)以获取 更多关于操作符的信息。 在Go代码中,如果某处需要一个特定类型的值并且一个类型不确定值可以表示 为此特定类型的值, 则此类型不确定值可以使用在此处。Go编译器将此类型不 确定值视为此特定类型的类型确定值。 这种情形常常出现在运算符运算、函数 调用和赋值语句中。 有些场景对某些类型不确定值并没有特定的类型要求。在这种情况下,Go编译 器将这些类型不确定值视为它们各自的默认类型的类型确定值。 上述两条类型推断规则可以被视为隐式转换规则。 中可以有 若干个常量描述。 上面的例子中含有4个常量声明。除了第3个,其它的常量声 明中都各自只有一个常量描述。 第3个常量声明中有4个常量描述。 在上面的例子中,符号*是一个乘法运算符, 符号!是一个布尔取否运算符。 运 算符将在下一篇文章(第8章)中详述。 常量声明中的等号=表示“绑定”而非“赋值”。 每个常量描述将一个或多个字面量 绑定到各自对应的具名常量上。 或者说,每个具名常量其实代表着一个字面常0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a定 值、类型推导、赋值、以及如何声明变量和具名常量。 上面的示例程序中使用了很多操作符,比如第17和19行的小于比较符<,第36行的 等于比较符==,还有第20和36行的加法运算符+。 第35行中的+不是一个运算符, 它是一个字符串字面量中的一个字符。 一个使用操作符的操作中涉及到的值称为操 作值(有时也可称为运算数)。 请阅读常用操作符(第8章)以获取更多关于操作 符的信息。 更多操作符将在后续其它文章中介绍。 在Go代码中,如果某处需要一个特定类型的值并且一个类型不确定值可以表示为此 特定类型的值, 则此类型不确定值可以使用在此处。Go编译器将此类型不确定值视 为此特定类型的类型确定值。 这种情形常常出现在运算符运算、函数调用和赋值语 句中。 有些场景对某些类型不确定值并没有特定的类型要求。在这种情况下,Go编译器将 这些类型不确定值视为它们各自的默认类型的类型确定值。 上述两条类型推断规则可以被视为隐式转换规则。 以有 若干个常量描述。 上面的例子中含有4个常量声明。除了第3个,其它的常量声明中 都各自只有一个常量描述。 第3个常量声明中有4个常量描述。 在上面的例子中,符号*是一个乘法运算符, 符号!是一个布尔取否运算符。 运算 符将在下一篇文章(第8章)中详述。 常量声明中的等号=表示“绑定”而非“赋值”。 每个常量描述将一个或多个字面 量绑定到各自对应的具名常量上。 或者说,每个具名常量其实代表着一个字面常0 码力 | 591 页 | 21.40 MB | 1 年前3
Go 1.18 中的泛型int | float64 } U 的核心类型是 *int,V 的核心类型是 float32,W 没有核心类型. 对类型使用运算符 可以进行比较 (==, !=) 的类型允许使用 comparable 类型进行约束 (非常特殊, 有无穷多种类型可以进行比较, 其他运算符都是可 穷举的): // comparable is an interface that is implemented by int { for i, vs := range s { if v == vs { return i } } return -1 } 19 对类型使用运算符(续) 可以进行排序 (<, <=, >, >=) 的类型允许使用 constraints.Ordered 接口类型进行约束 (只有有限多个类型可以使用排序符号 ): // IsSorted reports { if x[i] < x[i-1] { return false } } return true } 20 为什么不能用运算符方法? 新增的 comparable 看起来很别扭,为什么不直接使用运算符方法?例如: type Comparable[T any] interface { ==(T) bool } 主要原因是可比 较性本质上应该被定义为0 码力 | 45 页 | 501.50 KB | 1 年前3
Hello 算法 1.0.0b4 Golang版性能可能劣化,因此被视为负面属性;而如果最佳时间复杂度优于平均时间复杂度,则被视为正面属性。 是否基于比较:「基于比较的排序」依赖于比较运算符(< , = , >)来判断元素的相对顺序,从而排序整个 数组,理论最优时间复杂度为 ?(? log ?) 。而「非比较排序」不使用比较运算符,时间复杂度可达 ?(?) , 但其通用性相对较差。 11.1.2. 理想排序算法 运行快、原地、稳定、正向自适应、通用 二维 ?? 表的尺寸为 (? + 1) × (??? + 1) 。 第二步:找出最优子结构,进而推导出状态转移方程 与完全背包的状态转移方程基本相同,不同点在于: ‧ 本题要求最小值,因此需将运算符 max() 更改为 min() 。 ‧ 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 +1 即可。 ??[?, ?] = min(??[? − 1, ?], ??[?, ? − ??? 。从求“不超过”背包容量到求“恰好”凑出目标金额,因此使用 ??? + 1 来表示“无法凑出目标金额”的无效解。 ‧ 零钱兑换 II 问题从求“最少硬币数量”改为求“硬币组合数量”,状态转移方程相应地从 min() 改为 求和运算符。 14. 动态规划 hello‑algo.com 320 编辑距离问题 ‧ 编辑距离(Levenshtein 距离)用于衡量两个字符串之间的相似度,其定义为从一个字符串到另一个 字符串的最0 码力 | 347 页 | 27.40 MB | 1 年前3
Hello 算法 1.1.0 Go版性能可能劣化,因此被视为负面属性;而如果最佳时间复杂度优于平均时间复杂度,则被视为正面属性。 是否基于比较:基于比较的排序依赖比较运算符(<、=、>)来判断元素的相对顺序,从而排序整个数组, 理论最优时间复杂度为 ?(? log ?) 。而非比较排序不使用比较运算符,时间复杂度可达 ?(?) ,但其通用性 相对较差。 11.1.2 理想排序算法 运行快、原地、稳定、正向自适应、通用性好。显然 ?? 表的尺寸为 (? + 1) × (??? + 1) 。 第二步:找出最优子结构,进而推导出状态转移方程 本题与完全背包问题的状态转移方程存在以下两点差异。 ‧ 本题要求最小值,因此需将运算符 max() 更改为 min() 。 ‧ 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 +1 即可。 ??[?, ?] = min(??[? − 1, ?], ??[?, ? − ??? 出目标金额,因此使 用 ??? + 1 来表示“无法凑出目标金额”的无效解。 ‧ 零钱兑换问题 II 从求“最少硬币数量”改为求“硬币组合数量”,状态转移方程相应地从 min() 改为 求和运算符。 编辑距离问题 ‧ 编辑距离(Levenshtein 距离)用于衡量两个字符串之间的相似度,其定义为从一个字符串到另一个 字符串的最少编辑步数,编辑操作包括添加、删除、替换。 ‧ 编辑距离问题的状态定义为将0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0 Golang版性能可能劣化,因此被视为负面属性;而如果最佳时间复杂度优于平均时间复杂度,则被视为正面属性。 是否基于比较:「基于比较的排序」依赖比较运算符(<、=、>)来判断元素的相对顺序,从而排序整个数 组,理论最优时间复杂度为 ?(? log ?) 。而「非比较排序」不使用比较运算符,时间复杂度可达 ?(?) ,但 其通用性相对较差。 11.1.2 理想排序算法 运行快、原地、稳定、正向自适应、通用性好。显 ?? 表的尺寸为 (? + 1) × (??? + 1) 。 第二步:找出最优子结构,进而推导出状态转移方程 本题与完全背包问题的状态转移方程存在以下两点差异。 ‧ 本题要求最小值,因此需将运算符 max() 更改为 min() 。 ‧ 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 +1 即可。 ??[?, ?] = min(??[? − 1, ?], ??[?, ? − ??? 出目标金额,因此使 用 ??? + 1 来表示“无法凑出目标金额”的无效解。 ‧ 零钱兑换问题 II 从求“最少硬币数量”改为求“硬币组合数量”,状态转移方程相应地从 min() 改为 求和运算符。 编辑距离问题 ‧ 编辑距离(Levenshtein 距离)用于衡量两个字符串之间的相似度,其定义为从一个字符串到另一个 字符串的最少编辑步数,编辑操作包括添加、删除、替换。 ‧ 编辑距离问题的状态定义为将0 码力 | 382 页 | 17.60 MB | 1 年前3
共 13 条
- 1
- 2













