首页
学习
活动
专区
工具
TVP
发布

Golang开发

专栏作者
289
文章
265797
阅读量
38
订阅数
golang-101-hacks(22)——Types
Go语言中的数据类型可分为两类:已命名和未命名。除了预先已声明的类型(如“int”、“rune”等),还可以自己定义命名类型。例如:
羊羽shine
2019-07-01
4750
golang-101-hacks(21)——类型断言&类型开关
通过类型断言(type assertion)方式来判断接口的具体类型, Sometimes, you may want to know the exact type of an interface variable. In this scenario, you can use type assertion:
羊羽shine
2019-06-24
7470
golang-101-hacks(19)——switch
注:本文是对golang-101-hacks中文翻译。 和其他编程语言(例如C)相比,Go语音的switch-case语句不需要显式的添加“break”,也没有fall-though。如下面代码所示: Compared to other programming languages (such as C), Go's switch-case statement doesn't need explicit "break", and not have fall-though characteristic. Take the following code as an example:
羊羽shine
2019-06-21
3280
golang-101-hacks(18)——map类型访问
Map是一种指向哈希表的引用类型,可以使用map构造一个“键值”类型的数据库,这在实际编程中非常高效。例如,下面的代码是统计切片中每个元素的总数:
羊羽shine
2019-06-11
3540
golang-101-hacks(13)——二维切片
注:本文是对golang-101-hacks中文翻译。 Go支持多维切片,再此只对二维切片切片做介绍。日常生活中通常会使用到二维切片,而多维似乎并不多见。如果你经常使用多维切片,个人认为代码极不友好,也不容易维护,因此可以试试有没有更好的方法去解决多维的问题;另外的原因是多维切片和二维切片的原理是一样的,如果你对二维切片理解的很好,可以做到一通百通。 查看下面的demo
羊羽shine
2019-06-11
5940
golang-101-hacks(13)——Array
注:本文是对golang-101-hacks中文翻译。 在Go语言中,长度值是数组类型的一部分。下面的代码声明了一个数组:
羊羽shine
2019-06-03
3240
golang-101-hacks(10)——String
注:本文是对golang-101-hacks中文翻译。 在Go中string是由不可变的字节数组构成的。一旦赋值,就不能修改字符串的值。例如 In Go, string is an immutable array of bytes. So if created, we can't change its value. E.g.:
羊羽shine
2019-05-31
4830
golang-101-hacks(9)——追加元素
注:本文是对golang-101-hacks中文翻译。 在Slice中添加元素:可以使用“Go”内置函数append Go has a built-in append function which add elements in the slice:
羊羽shine
2019-05-30
5960
Go基础——Goroutine
创建时默认的stackd的大小 JDK5以后Java Thread stack默认的是1M Groutine 的stack初始化为2K KSE(kernel space entity)的对应关系 Java Thread是1:1 Groutine 的是M:N
羊羽shine
2019-05-29
5460
Golang——Context
Go中goroutine之间没有父与子的关系,多个gorountine都是平行的被调度,不存在所谓的子进程退出后的通知机制。多个goroutine协调工作涉及 通信,同步,通知,退出 四个方面: 通信:chan通道是各goroutine之间通信的基础。注意这里的通信主要指程序的数据通道。 同步:可以使用不带缓冲的chan;sync.WaitGroup为多个gorouting提供同步等待机制;mutex锁与读写锁机制。 通知:通知与上文通信的区别是,通知的作用为管理,控制流数据。一般的解决方法是在输入端绑定两个chan,通过select收敛处理。这个方案可以解决简单的问题,但不是一个通用的解决方案。 退出:简单的解决方案与通知类似,即增加一个单独的通道,借助chan和select的广播机制(close chan to broadcast)实现退出。 context设计目的: 1.退出通知机制一一通知可以传递给整个 goroutine 调用树上的每一个。 2.传递数据一一数据可 以传递给整个 goroutine 调用树上的每一个 goroutine
羊羽shine
2019-05-29
9641
Go语言核心编程(8)——工程管理
编译go源代码 Go1.5起Go的编译器完全使用Go重写,要源码安装Go需要有Go的编译环境,需要下载 1.4 版本使用C语言编写的Go编译器源码,通过 Linux自带的gcc先编译出 一个 Go 环境,然后拿这个Go环境编译新版本的Go环境 。 重要的环境变量 $GOROOT $GOROOT 是 Go 的安装根目录 。Linux 下的环境默认是/usr/local/go,如果$GOROOT位于上述位置,则不需要显式地设置$GO ROOT 环境变量;如果不是默认安装目录,则需要显式地设置$GOROOT 环境变量 $GOPATH $GOPATH 是 Go 语言编程的工作目录(workspace)如果没有设置 GOPATH 环境变量,则 Linux 下系统默认是 $HOME/go。
羊羽shine
2019-05-29
5730
Go语言核心编程(6)——反射
reflect. Value 表示实例的值信息, reflect.Value 是一个 struct,并提供了一系列 的 method给使用者 。一个是值的类型指针 typ ,另 一个是指 向值的指针 ptr, 最后 一个是标记宇段 flag。
羊羽shine
2019-05-29
5620
Go语言核心编程(5)——并发
注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记 并发和并行是两个不同的概念: • 并行意味着程序在任意时刻都是同时运行的。 • 并发意味着程序在单位时间内是同时运行的。
羊羽shine
2019-05-29
6860
Go语言核心编程(4)——接口
Go 语言的接口分为接口字面量类型和接口命名类型,接口的声明使用 interface 关键字 。 接口定义大括号内可以是方法声明的集合, 也可以嵌入另一个接口类型匿名字段, 还可以 是二者的混合。 接口的命名一般以“er"结尾 接口定义的内部方法声明不需要func引导
羊羽shine
2019-05-29
8420
Go语言核心编程(3)——类型系统
注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记 命名类型(Named Type) 类型可以通过标识符来表示,这种类型称为命名类型。Go 语言的基本类型中有20个预声明简单类型都是命名类型。 未命名类型 (Unamed Type) 一个类型由预声明类型、关键字和操作符组合而成,这个类型称为未命名类型。未命名类 型又称为类型字面量( Type Literal ) 数组(array) 、切片(slice) 、字典(map) 、通道(channel) 、指针(pointer) 、函数字面量(function) 、结构(struct) 和接口(interface) 都属于类型字面量, 也都是未命名类型 。
羊羽shine
2019-05-29
8710
Go语言核心编程(2)——函数
首字母大小写决定函数在其他包的可见性,大写时其他包可见,小写时只有相同的包可以访问。 多个相邻的同类型的参数可以使用简写模式 不支持默认参数 不支持函数重载
羊羽shine
2019-05-29
7360
Go语言核心编程(1)——基础知识
编程语言的标识符用来标示变量,类型,常量等语法对象的符号名称。分为以下两类 1 预声明的标识符 2 自定义标识符。
羊羽shine
2019-05-29
5500
golang-101-hacks(1)——创建开发环境
注:本文是对golang-101-hacks中文翻译,本文的原文地址 创建Go开发环境是非常容易的,以Linux系统为例,你只需要从https://golang.org/dl/ 下载和你系统匹配的二进制包,然后解压包文件就OK了。(注意作者原文的下载的包文件版本有点旧 ,建议下载最新版本,目前最新版本是1.12了)
羊羽shine
2019-05-29
6200
Go基础——数据类型
在上面的程序中,a 赋值为 true,b 赋值为 false。c 赋值为 a && b。仅当 a 和 b 都为 true 时,操作符 && 才返回 true。因此,在这里 c 为 false。当 a 或者 b 为 true 时,操作符 || 返回 true。在这里,由于 a 为 true,因此 d 也为 true。我们将得到程序的输出如下。
羊羽shine
2019-05-29
3820
Golang包——sync
1.它允许任意读操作同时进行 2.同一时刻,只允许有一个写操作进行 3.并且一个写操作被进行过程中,读操作的进行也是不被允许的 4.读写锁控制下的多个写操作之间都是互斥的 5.写操作与读操作之间也都是互斥的 6.多个读操作之间却不存在互斥关系 写操作的锁定和解锁
羊羽shine
2019-05-29
9140
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档