Go语言中文网 为您找到相关结果 279

golang 几种字符串的连接方式

最近在做性能优化,有个函数里面的耗时特别长,看里面的操作大多是一些字符串拼接的操作,而字符串拼接在 golang 里面其实有很多种实现。 实现方法 1. 直接使用运算符 func BenchmarkAddStringWithOperator(b *testing.B) { hello := "hello" world := "world" for i := 0; i < b.N; i++ { _ = hello + "," + world } } golang 里面的字符串都是不可变的,每次运算都会产生一个新的字符串,所以会产生很多临时的无用的字符串,不仅没有用,还会给 gc 带来额外的负担,所以性能比较差 2. fmt.Sprintf() func BenchmarkAddStringWi...阅读全文

博文 2018-01-24 22:34:36 hatlonely

Go位运算:取反和异或

在Go规范,^ 这个运算符在一元运算符和二元运算符中都出现了。那么他们分别是啥? 在规范中说道:^ bitwise XOR integers 这是按位异或。比如: package main import "fmt" func main() { fmt.Println(5^2) } 到这执行:[http://play.golang.org/p/iZioqWSSdA](http://play.golang.org/p/iZioqWSSdA) 一般语言中,按位取反是:~ Go中是不是这样呢?可以写个程序试一下: package main import "fmt" func main() { ...阅读全文

Go 系列教程 —— 6. 函数(Function)

这是我们 [Golang 系列教程](/subject/2)第 6 章,学习 Golang 函数的相关知识。 ## 函数是什么? 函数是一块执行特定任务的代码。一个函数是在输入源基础上,通过执行一系列的算法,生成预期的输出。 ## 函数的声明 在 Go 语言中,函数声明通用语法如下: ```go func functionname(parametername type) returntype { // 函数体(具体实现的功能) } ``` 函数的声明以关键词 `func` 开始,后面紧跟自定义的函数名 `functionname (函数名)`。函数的参数列表定义在 `(` 和 `)` 之间,返回值的类型则定义在之后的 `returntype (返回值类型)`处。声明一个参数的语法采用 **参...阅读全文

博文 2017-12-08 12:27:20 polaris

GOLang 转义字符

\a 匹配响铃符 (相当于 \x07) 注意:正则表达式中不能使用 \b 匹配退格符,因为 \b 被用来匹配单词边界, 可以使用 \x08 表示退格符。 \f 匹配换页符 (相当于 \x0C) \t 匹配横向制表符(相当于 \x09) \n 匹配换行符 (相当于 \x0A) \r 匹配回车符 (相当于 \x0D) \v 匹配纵向制表符(相当于 \x0B) \123 匹配 8 進制编码所代表的字符(必须是 3 位数字) \x7F 匹配 16 進制编码所代表的字符(必须是 3 位数字) \x{10FFFF} 匹配 16 進制编码所代表的字符(最大值 10FFFF ) \Q...\E 匹配 \Q 和 \E 之间的文本,忽略文本中的正则语法 \\ 匹配字符 \ \^ 匹配字符 ^ \$ 匹配字符 $...阅读全文

Go 系列教程 —— 4. 类型

这是我们 Golang 系列教程的第 4 个教程。 请阅读本系列的 [Golang 教程第 3 部分:变量](/articles/11756) 来学习变量的知识。 下面是 Go 支持的基本类型: - bool - 数字类型 - int8, int16, int32, int64, int - uint8, uint16, uint32, uint64, uint - float32, float64 - complex64, complex128 - byte - rune - string ### bool bool 类型表示一个布尔值,值为 true 或者 false。 ```go package main import "fmt" func main() { a := true b :...阅读全文

博文 2017-12-07 06:24:41 heyulong

Golang中的正则表达式

Golang中的正则表达式 用法: 单一: . 匹配任意一个字符,如果设置 s = true,则可以匹配换行符 [字符类] 匹配“字符类”中的一个字符,“字符类”见后面的说明 [^字符类] 匹配“字符类”外的一个字符,“字符类”见后面的说明 \小写Perl标记 匹配“Perl类”中的一个字符,“Perl类”见后面的说明 \大写Perl标记 匹配“Perl类”外的一个字符,“Perl类”见后面的说明 [:ASCII类名:] 匹配“ASCII类”中的一个字符,“ASCII类”见后面的说明 [:^ASCII类名:] 匹配“ASCII类”外的一个字符,“ASCII类”见后面的说明 \pUnicode普通类名 匹配“Unicode类”中的一个字符(仅普通类),“Unicode类”见后面的说明 \PUn...阅读全文

博文 2016-10-28 14:00:04 zfy1355

golang 字符串常用操作(go练习代码)

练习golang string常用操作,备份 类型转换 比较对比 搜索 查找 统计 替换 删除过滤 大小写转换 前缀后缀 字符串分割 拼接 3中拼接字符串方式对比 func main() { fmt.Println("字符串测试") fmt.Println("字符串转化") //获取程序运行的操作系统平台下 int 类型所占的位数,如:strconv.IntSize。 //strconv.IntSize fmt.Println("将字符串转换为 int 型。") var trastr01 string = "100" traint01, err_tra := strconv.Atoi(trastr01) if err_tra != nil { fmt.Println(err_tra) } e...阅读全文

博文 2017-10-17 05:04:48 正为疯狂

golang的哪些坑爷事: package实践

在golang中package是个困惑的概念, 特别是package还可以与folder不同名, 委实让我恶心了一把. 关于golang的package的最佳实践: package is folder. package name is folder name. package path is folder path. 信耶稣得永生! 1. 同一个folder存在不同package, 编译错误: D:/go/bin/go.exe build [E:/cgss/src/pkg01] can't load package: package pkg01: found packages pkg01 (pkg01.go) and pkg012 (pkg02.go) in E:\cgss\src\pkg0...阅读全文

博文 2016-09-09 18:00:02 zolo

Go 语言运算符

Go 语言运算符运算符用于在程序运行时执行数学或逻辑运算。Go 语言内置的运算符有:算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符接下来让我们来详细看看各个运算符的介绍。算术运算符下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。运算符描述实例+相加A + B 输出结果 30-相减A - B 输出结果 -10*相乘A * B 输出结果 200/相除B / A 输出结果 2%求余B % A 输出结果 0++自增A++ 输出结果 11--自减A-- 输出结果 9以下实例演示了各个算术运算符的用法:package main import "fmt" func main() { var a int = 21 var b int = 10 var c int c =...阅读全文

博文 2015-11-25 19:00:32 u011225629

golang语言构造函数

1、构造函数定义 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。 而golang没有相关的构造函数定义,只能通过new来创建构造函数。 2、构造函数声明 声明一个struct结构: 声明一个全局函数,返回*struct ok,到此已经构造函数定义完...阅读全文

golang解析http multipart/form的三种方式

multipart/form-data 顾名思义可以上传多个form-data 并且用分隔符进行分割,多用于文件上传1. http multipart/form-data 请求样例POST /handle HTTP/1.1 Host: localhost:8080 Connection: keep-alive Content-Length: 182537 Cache-Control: max-age=0 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWdDAe6hxfa4nl2IgAccept: text/html,application/xhtml+xml,application/xml;q=0.9,im...阅读全文

博文 2018-08-09 16:35:58 暮色伊人

Go 获取当前可执行文件的所在目录

代码如下: import ( "errors" "os" "os/exec" "path/filepath" "strings" ) func GetCurrentPath() (string, error) { file, err := exec.LookPath(os.Args[0]) if err != nil { return "", err } path, err := filepath.Abs(file) if err != nil { return "", err } i := strings.LastIndex(path, "/") if i < 0 { i = strings.LastIndex(path, "\\") } if i < 0 { return "", err...阅读全文

博文 2017-02-13 04:00:26 风华神使

google go 模板处理

Go模板使用 在Go语言中,使用"html/template"包来进行模板处理,使用Parse、ParseFile、Execute等方法加载模板。例子: package main import ( "html/template" "os" ) type Actor struct { UserName string } func tpl_merger_structdata() { t := template.New("struct data demo template") //创建一个模板 t, _ = t.Parse("hello, {{.UserName}}! \n") //解析模板文件 actor := Actor{UserName: "jsrush@structMap"} // 创建一...阅读全文

博文 2014-12-05 14:00:01 xiangtaoxiangtao

golang的位运算操作符的使用

& 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 感觉位运算操作符虽然在平时用得并不多,但是在涉及到底层性能优化或者使用某些trick的时候还是比较有意思。 &(AND) |(OR) 就不提了最常用的东西 会编程就会。 &操作的话是当 两个数需要同时为1的时候才会保留。 例如 0000 0100 & 0000 1111 => 0000 0100 => 4 | 操作的话是当 两个数同时为1或者1个为1一个不为1的时候会保留。 例如 0000 0100 | 0000 1111 => 0000 1111 => 15 ^(XOR) 在go语言中XOR是作为二元运算符存在的: 但是如果是作为一元运算符出现,他的意思是按位取反,例如 pa...阅读全文

博文 2017-01-07 08:00:02 henrylee2cn

《Golang 入门系列三》golang的运算符

前言:运算符优先级,是描述在计算机运算计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算,然后执行较低优先级的运算。 一、算数运算符 下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。 运算符 描述 实例 + 相加 A + B 输出结果 30 - 相减 A - B 输出结果 -10 * 相乘 A * B 输出结果 200 / 相除 B / A 输出结果 2 % 求余 B % A 输出结果 0 ++ 自增 A++ 输出结果 11 -- 自减 A-- 输出结果 9 二、关系运算符 下表列出了所有Go语言的关系运算符。假定 A 值为 10,B 值为 20。 运算符 描述 实例 == 检查两个值是否相等,如果相等返回 True 否则返回 False。 (A == B...阅读全文

博文 2018-02-28 01:33:07 IT--小哥

Golang-相对路径问题

先明确golang中几个参数的含义 之前理解错误了导致自己在写路径时出现了一些问题困惑了好久 特此记录 os.Args[0] 这个参数 并不是什么项目执行路径 获取的是命令行执行语句的第一句 以空格为分隔符 与项目执行路径无丝毫关系 --- 之前理解错了真惭愧啊 os.Getwd() 获取的是运行时你当前所在的路径 比如在/etc 目录下 运行/usr/main文件 最终通过Getwd获取到的值是 /etc golang中的相对路径就是根据这个执行路径来相对的 这也就解释了我 go run 和 idea 启动 还有 supervisor启动 却经常找不到资源的原因 因为所在的执行路径都不一定是相同的自然会这样 所以 一般我现在的做法是 如果是go run 直接到目录地下go run 如果是 ...阅读全文

博文 2015-06-17 20:02:36 u012807459

GO语言基础环境搭建以及HelloWorld

Go语言(golang)是Google推出的一种全新的编程语言。关于其详细介绍请自行百度,直接介绍基础开发环境配置。 1、安装GO安装包。 官方下载地址应该是 https://code.google.com/p/go/downloads/list 不过如果你在被墙了的话应该是无法访问该地址,这里是用的版本是go1.3.windows-386.msi,可直接百度文件名下载安装即可。 2、配置环境变量。 这里同Java环境变量配置很相似,配置项稍多。具体如下: 新建 变量名:GOBIN 变量值 :D:\Program Files (x86)\Go\bin 新建 变量名:GOARCH 变量值:386 新建 变量名:GOOS 变量值:windows 新建 变量名: GOROOT 变量值:c:\go ...阅读全文

博文 2015-05-27 16:00:00 PrinceTerence

Golang语法总结(三):可见性规则(公有与私有,访问权限)

Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头) 例如: visibility/test.go package visibility import "fmt" const PI = 3.145const pi = 3.14const _PI = 3.14 var P int = 1var p int = 1 func private_function() { fmt.Println("only used in this pa...阅读全文

博文 2016-02-29 07:00:00 QQ245671051

Go 语言汇编快速入门

在 Go 的源码中包含大量汇编语句,最优秀的示例代码位于 `math/big`, `runtime` 和 `crypto` 这些库中,但是从这里入门的话实在太过于痛苦,这些示例都是着力于系统操作和性能的运行代码。 对于没有经验的 Go 语言爱好者来说,这样会使通过库代码的学习过程遇到很大困难 。这也是撰写本文的原因所在。 Go ASM ( 译者注:ASM 是汇编的简写 ) 是一种被 Go 编译器使用的特殊形式的汇编语言,而且它基于 Plan 9 (译者注:来自贝尔实验室的概念[网络操作系统 ](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F))输入风格,所以先从 [文档](...阅读全文

博文 2018-04-18 16:13:00 polaris

Go圣经-学习笔记入门bufio.Scanner

上一篇 Go圣经-学习笔记入门bufio 下一篇 Go圣经-学习笔记入门bufio.Writer 由bufio.Reader引出的问题 由上篇文章《Go圣经-学习笔记入门bufio》,我们可以知道,bufio.Reader结构体中所有读取数据的方法,都包含了delim分隔符,这个用起来很不方便,所以Google对此在go1.1版本中加入了bufio.Scanner结构体,用于读取数据。 使用DEMO: func main(){ scanner:=bufio.NewScanner( strings.NewReader("ABCDEFG\nHIJKELM"), ) for scanner.Scan(){ fmt.Println(scanner.Text()) // scanner.Bytes()...阅读全文

博文 2017-10-22 00:31:10 cdh0805010

Go 语言的基本数据类型

Go 语言的基本数据类型 0)变量声明 var 变量名字 类型 = 表达式 例: var num int = 10 其中“类型”或“= 表达式”两个部分可以省略其中的一个。 1)根据初始化表达式来推导类型信息 2)默认值初始化为0。 例: var num int // var num int = 0 var num = 10 // var num int = 10 1)整型 1.1)整型类型 类型名称有无符号bit数 int8 Yes 8 int16 Yes 16 int32 Yes 32 int64 Yes 64 uint8 No 8 uint16 No 16 uint32 No 32 uint64 No 64 int Yes 等于cpu位数 uint No 等于cpu位数 rune Ye...阅读全文

博文 2016-09-08 12:00:01 fengbohello

Go语言的“++”和“—”运算符

以下摘自The Go Programming Language: The increment statement i++ adds 1 to i ; it’s equivalent to i += 1 which is in turn equivalent to i = i + 1 . There’s a corresponding decrement statement i– that subtracts 1. These are statements, not expressions as the y are in most languages in the C family, so j = i++ is illegal, and the y are postfix only, so –...阅读全文

博文 2017-06-24 19:22:04 肖楠

golang 判断字符串字母、数字、空白符、标点字符

包 unicode 包中一些常用函数(其中 v 代表字符): 判断是否为字母: unicode.IsLetter(v) 判断是否为十进制数字: unicode.IsDigit(v) 判断是否为数字: unicode.IsNumber(v) 判断是否为空白符号: unicode.IsSpace(v) 判断是否为Unicode标点字符 :unicode.IsPunct(v) 还有其他实用方法 推荐查看unicode包内方...阅读全文

博文 2019-08-29 11:32:49 howie_矜暮

让go语言调用外部程序时支持管道符

有一个需求是用go语言程序调用外部命令时,允许使用管道符,如 ls | wc -l Go语言对外部命令的调用进行了一定的封装,下面来试一下: package main import ( "os" "os/exec" ) func main() { run1() } func run1() { cmd := exec.Command("ls", "|", "wc", "-l") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr cmd.Start() cmd.Run() cmd.Wait() } 这样执行时,控制台会打出错误: ls: 无法访问|: 没有那个文件或目录 ls: 无法访问wc: 没有那个文件或目录 难道Go程序不能使用管道符命令吗?带这此...阅读全文

博文 2014-10-04 19:26:31 qinerg

golang package整理(strings)

/*package strings*/ //HasPrefix 判断字符串 s 是否以 prefix 开头 strings.HasPrefix(s, prefix string) bool //HasSuffix 判断字符串 s 是否以 suffix 结尾 strings.HasSuffix(s, suffix string) bool //Contains 判断字符串 s 是否包含 substr strings.Contains(s, substr string) bool //****判断子字符串或字符在父字符串中出现的位置(索引)***// //Index 返回字符串 str 在字符串 s 中的索引(str 的第一个字符的索引),-1 表示字符串 s 不包含字符串 str string...阅读全文

博文 2015-08-01 09:00:02 ivandong_qifan

Golang可见性规则(公有与私有,访问权限)

Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头) 例如: visibility/test.go package visibility import "fmt" const PI = 3.145 const pi = 3.14 const _PI = 3.14 var P int = 1 var p int = 1 func private_function() { fmt.Println("only used in this...阅读全文

博文 2017-09-05 16:30:01 ganchuanpu

golang笔记-注释-标识符

Go语言注释 行注释://xxxxxx 块注释:/* xxxxxx */ Go语言关键字,严格区分大小写。 1.break 2.default 3.func 4.interface 5.select 6.case 7.defet 8.go 9.map 10.struct 11.chan 12.else 13.goto 14.package 15.switch 16.const 17.fallthrough 18.if 19.range 20.type 21.contiue 22.for 23.import 24.return 25.var Go语言预定义标识符 1.append 2.bool 3.byte 4.cap 5.close 6.complex 7.complex64 8.compl...阅读全文

博文 2016-04-09 23:00:01 golangerblog

Go 位运算

// xuhh_go_位运算符 project main.go /* 位移操作 << : 向左移位 可以看做是 乘以2的几次方 位移操作 >> : 向右移位 可以看做是 除以2的几次方 and操作 & : 都为1 才是1 or 操作 | : 只要有一个是1 那么就是1 取反 ^ :有一个为1 则 就是1 两个1 或者两个0 全是 0 标志位操作 &^ : a &^ b = (a^b) & b 其实就是清除标记位 (将a中为1的位 如果b中相同位置也为1,则将a中该位置修改为0,a中其他位不变) */ package main import ( . "fmt" ) func main() { var p = Person{"xuhh", "12"} Println(p) const a = 2...阅读全文

博文 2016-03-17 12:00:01 xuheazx

golang windows环境下的配置安装

使用MSI文件,然后按照提示安装围棋工具。默认情况下,安装程序使用转到分布在c:\Go。安装程序应设置c:\Go\bin目录到Windows PATH环境变量。重新启动任何打开命令提示符,以使更改生效。 1.在官网 Go:https://golang.org/dl/ 下载 MSI文件,不过现在这个网站可能被墙了,所以如果不想使用最新版本可以不去翻墙,百度网盘里有很多安装文件 2.安装选择安装路径,安装过程中会自动配置环境变量 3.验证是否安装成功 安装后在控制台输入如下命令表示成功: 4.验证安装 创建一个名为test.go的go文件D:\goproject File: test.go import "fmt" func main() { fmt.Println("Hello, World!...阅读全文

Golang通过syscall调用win32的Api

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 Golang不是完全的跨平台, 并没有提供Windows下的相关方法,只能通过Syscall包去调用Win库。 开始 如果你不了解Windows下API调用,请观看MSDN文档,我知道有些人找不到,没关系: 1. 英文版: https://msdn.microsoft.com/en-us/library/windows/desktop/hh447209(v=vs.85) ...阅读全文

博文 2018-01-24 15:33:04 90design

Go 实现计算器

只进行四则运算,利用栈结构和后缀表达式来计算数学表达式,支持使用 () 改变运算符优先级。 本文代码:GitHub 运行效果: 问题如果只能进行两个值的加减乘除,如何编程计算一个数学表达式的值? 比如计算 1+2*3+(4*5+6)*7,我们知道优先级顺序 () 大于* / 大于 + -,直接计算得 1+6+26*7 = 189 中缀、后缀表达式的计算人利用中缀表达式计算值数学表达式的记法分为前缀、中缀和后缀记法,其中中缀就是上边的算术记法: 1+2*3+(4*5+6)*7,人计算中缀表达式的值:把表达式分为三部分1 2+3 (4*5+6)*7 分别计算值,求和得 189。但这个理解过程在计算机上的实现就复杂了。 计算机利用后缀表达式计算值中缀表达式 1+2*3+(4*5+6)*7 对应的后...阅读全文

博文 2018-03-15 10:59:32 wuYinBlog

go语言之bufio 打开文件,读取一行

package main import ( "fmt" "os" "bufio" "io" ) func main() { f, err := os.Open("c:\\aaa.txt")//打开文件 defer f.Close() //打开文件出错处理 if nil == err { buff := bufio.NewReader(f) //读入缓存 for { line, err := buff.ReadString('\n') //以'\n'为结束符读入一行 if err != nil || io.EOF == err { break } fmt.Print(line) //可以对一行进行处理 } } ...阅读全文

博文 2015-06-17 23:02:07 zistxym

go语言打印九九乘法表

package main import "fmt" func main() { /* local variable definition */ var top int = 10 /*两层循环打印*/ for i:=1; i /*格式输出,最后输出一个制表符以分隔一行中的算式 %2d用于将每一个结果以两位整数对齐*/ fmt.Printf("%d * %d = %2d\t", i , j, i*j) } println() } } go语言编写的乘法表,初学者,各位轻拍。 输出: 1 * 1 = 1 2 * 1 = 2 2 * 2 = 4 3 * 1 = ...阅读全文

博文 2015-12-24 00:00:00 tjzzy

go语言初记2(备忘)

看《Go入门指南》 ,这里讲得比较基础,针对go 1.0版,以下是一些我自己觉得特别和不容易理解的地方的摘抄! 上次有说到go里不同类型之间操作必须显示转换,int和uint不固定,所以int 不是int32 int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。 package main func main() { var a int var b int32 a = 15 b = a + a // 编译错误 b = b + 5 // 因为 5 是常量,所以可以通过编译 } 格式化说明符(应该不止这些) 在格式化字符串里,%d 用于格式化整数(%x 和 %X 用于格式化 16 进制表示的数字),%g 用于...阅读全文

博文 2014-10-04 19:26:32 haanico

Golang 安装和配置

1. Windows下的安装和基本配置 打开官网 https://golang.org/ ,点击红框中的 Download Go 图:Golang 主页 进入到下载页面,向下滚动到最新版本详细的下载列表。 图:下载页面 我先介绍Windows的安装:总共有红框中的四个文件。386 代表你的操作系统是32位使用这个,amd64 代表64位操作系统使用的(AMD首先生产了64位cpu,所以一般称为amd64)。(在 我的电脑 (windows10叫此电脑,英文版叫This PC),右键选择属性,里面就可以看见,如下图:) 操作系统位数查看 如图,我的操作系统是64位。 而 zip 和msi的区别,就是安装版和便携版(绿色版)的区别。zip解压就能使用,而msi需要点下一步,下一步,安装好,就可以...阅读全文

博文 2017-07-15 06:06:29 naturelover5

go圣经笔记--第三章

Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。 3.1. 整型 1)固定大小,int8、int16、int32和int64,分别对应8、16、32、64bit大小的有符号整形数,与此对应的是uint8、uint16、uint32和uint64四种无符号整形数类型。 2)不固定大小,int和uint,分别对应32或64bit 3)Unicode字符rune类型是和int32等价的类型,通常用于表示一个Unicode码点。这两个名称可以互换使用。同样byte也是uint8类型的等价类型。 4)还有一种无符号的整数类型uintptr,没有指定具体的bit大小但是足以容纳指针。 5)运算符 算术运算符+、-、*和/可以适用与于整数、浮点数和复数,但是取模运算符%仅用于整数间的运...阅读全文

博文 2016-04-15 12:00:01 betterjun30

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换

获取当前时间,类型是Go的时间类型Time (1) currentTime:=time.Now() // (2) t2:=time.Now().Month() //月 t3:=time.Now().Day() //日 t4:=time.Now().Hour() //小时 t5:=time.Now().Minute() //分钟 t6:=time.Now().Second() //秒 t7:=time.Now().Nanosecond() //纳秒 currentTimeData:=time.Date(t1,t2,t3,t4,t5,t6,t7,time.Local) //获取当前时间,返回当前时间Time fmt.Println(currentTime) //打印结果:2017-04-11 1...阅读全文

博文 2019-10-04 21:32:45 aside section ._1OhGeD

Golang学习(11)——path filepath包

Golang学习 - path/filepath 包-----------------------filepath 中的函数会根据不同平台做不同的处理,比如路径分隔符、卷名等。 -----------------------路径分隔符转换:const ( Separator = os.PathSeparator // 路径分隔符(分隔路径元素) ListSeparator = os.PathListSeparator // 路径列表分隔符(分隔多个路径))下面两个函数主要用于将 Windows 路径分隔符转换为 Linux 路径分隔符,处理完后再转换回去,只在 Windows 中有用,在 Linux 中没必要:// 将 path 中平台相关的路径分隔符转换为 '/'ToSlash(path ...阅读全文

博文 2017-02-10 10:15:54 1160636144

golang 字符串拼接几种方式

package main import ( "bytes" "fmt" "strings" ) func main() { // 字符串拼接1 s1 := fmt.Sprintf("%s:%d", "127.0.0.1", 8080) fmt.Println(s1) // 字符串拼接2 s2 := strings.Join([]string{"hello", "world"}, "") fmt.Println(s2) // 字符串拼接3 s3 := bytes.Buffer{} s3.WriteString("hello") s3.WriteString("world") fmt.Println(s3.String()) // 字符串拼接4 s4 := "hello" + "world" f...阅读全文

博文 2019-12-09 13:32:47 就超棒

gjson

golang中gjson 开始 $ go get -u github.com/tidwall/gjson JSON串 获取值 Get查询指定路径, 通过.来区分. 比如"name.last"或者"age". 如果找到了匹配路径, 将返回结果. 同时有 GetMany 方法批量获取值, 也有 GetBytes 方法获取字节切片. package main import "github.com/tidwall/gjson" const json = `{"name":{"first":"Janet","last":"Prichard"},"age":47}` func main() { value := gjson.Get(json, "name.last") println(value.Str...阅读全文

博文 2019-09-29 17:33:07 aside section ._1OhGeD

Go-指针、传值与传引用、垃圾回收

要点 Go使用的*、&、new()这些运算符,和C++的用法完全一样。 有传值和传引用/传地址的概念,和C++一样。 Go没有new对应的delete操作,而是采用Java一样的垃圾自动回收机制。 传引用或指针主要用于用户自定义类型。 示例 package main import "fmt" /* D:\examples>go run helloworld.go 10 100 5 100 D:\examples> */ func main() { i := 10 pass_by_value(i) fmt.Println(i) pass_by_reference(&i) fmt.Println(i) x := new(int) *x = 5 fmt.Println(*x) pass_by_re...阅读全文

博文 2016-09-06 10:00:04 u013344915

Golang 实现计算器

只进行基本的四则运算,利用栈结构和后缀表达式来计算数学表达式的值。本文代码:GitHub 原文:wuyin.io 转载请注明来源。运行效果: 问题 如果只能进行两个值的加减乘除,如何编程计算一个数学表达式的值?比如计算 1+2*3+(4*5+6)*7,我们知道优先级顺序 () 大于 * / 大于 + - ,直接计算得 1+6+26*7 = 189 中缀、后缀表达式的计算 人利用中缀表达式计算值 数学表达式的记法分为前缀、中缀和后缀记法,其中中缀就是上边的算术记法: 1+2*3+(4*5+6)*7,人计算中缀表达式的值:把表达式分为三部分1 2+3 (4*5+6)*7 分别计算值,求和得 189。但这个理解过程在计算机上的实现就复杂了。 计算机利用后缀表达式计算值 中缀表达式 1+2*3+(4...阅读全文

博文 2018-02-04 16:34:39 wuYin

Go 中的位运算

![cover](https://raw.githubusercontent.com/studygolang/gctt-images/master/go-bits/cover.png) 在以前内存和处理能力(CPU)都是非常昂贵的,于是直接在位上编程就成为了处理信息的首选方式(在有些情况下也是唯一的方式)。如今,直接对位进行操作在底层系统、图像处理和密码学等领域还是至关重要的。 在 Go 语言中支持以下几种操作位的方式: ``` & 位与 | 位或 ^ 异或 &^ 位与非 << 左移 >> 右移 ``` 接下来我们会对每一个操作符进行详细的讨论并给出一些可以应用位操作的实例。 ## `&` 操作符 在 Go 中,`&` 操作符用来在两个整数之间进行位 AND 运算。AND 操作有以下特性: ...阅读全文

博文 2018-01-28 11:24:25 saberuster

golang中自动加分号的情况

分号 正式的语法使用分号“;”作为多个语句的分隔符。Go程序可以使用以下两种规则在大多数情况下省略这些分号: 当输入被断开为标记时,如果行末标记为 一个标识符一个整数、浮点数、虚数、字符或字符串文字关键字break、continue、fallthrough或return中的一个运算符和分隔符++、--、)、]或}中的一个 则分号将被自动插入到标记流中非空白行的末尾。 如果让复合语句占用单独一行,则在“)”或“"}"”后面的分号可以被省略。 为了反映习惯用法,本文档中的示例代码将依据此规则省略分号。 其实偶也没看懂...阅读全文

博文 2015-06-17 20:23:38 icyday

golang 表达式

表达式 1. 关键字 2. 运算符 3. 初始化关键字 关键字是指被编程语言保留而不让编程人员作为标志符使用的字符序列。因此,关键字也称为保留字, 每种编程语言都有自己的关键字,从使用的角度看,我们可以把Go语言的25个关键字分为如下三类:1. 用于程序声明 2. 用于程序实体声明和定义 3. 用于程序流程控制的关键字类别关键字程序声明import, package实体声明和定义var,const,type,struct,func,interface,map,chan流程控制if,else,switch,case,fallthrough,default,for,range,continue,break,go,select,defer,goto,return运算符 运算符就是用于执行特定计算或...阅读全文