go

如何快速学习一门新编程语言2-表达式有哪些可以用,算数运算逻辑运算位运算关系运算赋值其他

如何快速学习一门新编程语言2-表达式有哪些可以用,算数运算逻辑运算位运算关系运算赋值其他 对照java和go的表达式使用方式,用go重写各种运算。 目录 目录 变量如何定义,数据类型有哪些 表达式有哪些可以用,算数运算逻辑运算位运算关系运算赋值其他 逻辑控制结构有哪些,条件判断怎么写,循环如何写,分支语句怎么写 常用数据类型,字符串,数组,哈希表 面向对象1,类怎么写,类数据成员写法,类方法写法,公有/保护/私有权限怎么控制,静态成员和静态方法 面向对象2,如何实现继承,以及继承权限控制 面向对象3,如何实现重载,多态 面向对象4,面向接口编程 异常处理机制 基本数据结构,数组,链表,最小堆,栈,二叉树,图 推广到更多语言 表达式 运算符 按照java划分方式,运算符分为六大类 算数运算符:加,减,乘,除,取模,自增,自减 关系运算: 6种关系运算,等于(==),不等于(!=),大于(>),小于(<),大于等于(>=),小于等于(<=) 位运算:位与,位或,异或,取反,左移位,右移位,按位右移补0(java才有) 逻辑运算: 3种逻辑运算,与(&&)或(||)非(!) 赋值运算 其他运算 我们接下来逐个翻译成go 算数运算符 加减乘除,最基本的四则运算,取模,自增,自减少。几乎所有语言里特性都差不多。需要注意的有两点 是有...

如何快速学习一门新编程语言0

决定开一个系列文章,专门讲如何在熟练掌握一门编程语言之后,快速的去学习一门全新的语言。 为什么你会觉得学习一门新语言很费劲,无非三点原因。第一,第一门语言没学好。第二,没有跳出编程语言本身来看编程语言,视角提升一层,就像在三维世界看二维平面,自然会不同。第三,不善使用搜索引擎和官方文档来学习。 我有一套非常好用的办法,分为三个步骤: 忽略语言细节,把尽可能多的信息抽象成语言概念 设定一个目标,在新语言环境下来实现它 使用我们从熟悉的语言中得来的概念,通过搜索引擎,或者看书,找到新语言环境下的实现方案 我这里就以java为例,对照着java的做法来学一遍golang吧。 以java为例(或者php python都有对等的东西),后续文章我们用go语言去实现对等的功能即可。 目录 变量如何定义,数据类型有哪些 表达式有哪些可以用,加减乘除逻辑运算位运算 逻辑控制结构有哪些,条件判断怎么写,循环如何写,分支语句怎么写 常用数据类型,字符串,数组,哈希表 面向对象1,类怎么写,类数据成员写法,类方法写法,公有/保护/私有权限怎么控制,静态成员和静态方法 面向对象2,如何实现继承,以及继承权限控制 面向对象3,如何实现重载,多态 面向对象4,面向接口编程 异常处理机制 基本数据结构,数组,链表,最小堆,栈,二叉树,图 推广到更多语言 如果上述文字表示,你不知道说的是什么?或者不...

golang chan的用法

实验目的 chan相关前置知识点,请参考本文底部链接。墙裂推荐阅读。 假设系统内除了主线程之外,有四个线程connector,sender,receiver,heartbeat connector,负责建立网络连接,在连接断开的时候进行重连 sender,负责发送数据报 receiver,负责接收数据报 heartbeat,负责监控心跳 如何启动connector connector需要等待ConnectorNotifier,值为1连接,值为2重连 建立连接之后,发送三次ConnectorConnected,通知sender, sender,receiver可以开工 var ConnectorConnected chan int = make(chan int, 3) // 已连接通知 func connector(){ ..... // 成功之后发送三次通告 ConnectorConnectedNotifier <- 1 ConnectorConnectedNotifier <- 1 ConnectorConnectedNotifier <- 1 } 如何启动sender, receiver,以及heartbeat 等待ConnectorConnectedNotifier,收到...

go语言数组内存是怎么扩容的

话不多说,上测试代码和结果 package main import ( "fmt" ) func main() { var orderIds []int fmt.Println(len(orderIds), cap(orderIds)) fmt.Println("已使用", "\t\t", "容量", "\t\t", "增量") var lastCap = cap(orderIds) for i := 0; i < 100000; i++ { orderIds = append(orderIds, 1) if cap(orderIds) != lastCap{ fmt.Println(len(orderIds), "\t\t", cap(orderIds), "\t\t", cap(orderIds)-lastCap) lastCap = cap(orderIds) } } } 输出 0 0 已使用 容量 增量 1 2 2 3 4 2 5 8 4 9 16 8 ...
执行时间: 35.590171813965 毫秒