问大神们一个关于slice的基础问题
为什么slice不支持==操作?书上描述的不是很清楚...阅读全文
为什么slice不支持==操作?书上描述的不是很清楚...阅读全文
 上图代码,下图结果  大神,告诉我正确姿...阅读全文
##### 有一个需求,想生成以下的xml:
```xml
举个例子,比如我有一个数组,包含了 1-100 这些数字 有一个处理函数,比如输出平方 ``` go func cal(num int) { fmt.Println(num * num) } ``` cpu 是多核, 我想知道 go 如何能启用多个 goroutine 并行处理这 100 个数字 输出的顺序不重要 希望大神讲解下 最好能给段代码讲解下 谢谢...阅读全文
最近休息go web开发,但是ssqlite3一直安装不了,求大神指点,总是提示go build github.com/mattn/go-sqlite3: D:\Go\pkg\tool\windows_amd64\cgo.exe: exit status 2,系统是win10,go版本1.83,GCC,5.1...阅读全文
Borrowing继续讲讲另一个重要的概念:借用(borrowing),什么是借用?我们先来看前一文章([易学易懂系列|rustlang语言|零基础|快速入门|(3)])的代码 : let a = [1, 2, 3]; let b = a;println!("{:?} {:?}", a, b);// [1, 2, 3] [1, 2, 3] let a = vec![1, 2, 3]; let b = a;println!("{:?} {:?}", a, b);// Error; use of moved value:a我们从上篇文章知道,第二段代码会报错,那怎么才能不报错呢?我们改成以下代码: let a = vec![1, 2, 3];let b =&a;//这里加了一个符号:&,表示借用...阅读全文
简介 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。 描述 Go的语法接近C语言,但对...阅读全文
在Java中这样转是很方便的 new Date(1454129290L) 但是在Go中我就不知道如何转, 新人求大神们指教一下 谢谢啦...阅读全文
想问下怎么用下图查出的这些属性计算cpu的利用率?在线等,急急急!!!  { keys.push(key) } // Check if keys are empty and if not, probably declared object // returned. if (keys.length) { return keys } // Attempt using the __proto__ object if we can copy. We are probably ...阅读全文
我想解析一个json文件。对应的结构体是有两层嵌套。但是第二层嵌套就解析不出来了,求大神们指点 type Result struct{ Creds []Credential } type Credential struct { ThirdParty string Cid string `json:"cid"` Csecret string `json:"csecret"` RedirectURL string Scopes []Scope AuthURL string TokenURL string } type Scope struct{ s string } 结构体如上,解析...阅读全文
Go介绍 并发支持,垃圾回收的编译型系统编程语言。 特点: 类型安全 和内存安全 以非常直观和极低代价的方案实现高并发 高效的垃圾回收机制 快速编译 (同时解决C语言中头文件太多的问题) 为多核计算机提供性能提升的方案 UTF-8编码支持 Go环境变量 GOEXE=.exe // 形成可执行文件的后缀 GOPATH // 工作目录 GOPATH下约定俗成的目录: bin // 存放编译后生成的可执行文件 pkg // 存放编译后生成的包文件 src // 存放项目源码 常用命令 go get // 获取远程包 (git或hg(如果是谷歌code上托管)) go run // 直接运行程序 go build // 编译,检查是否有编译错误 go fmt // 格式化源码 go install ...阅读全文
***大神,我在网上搜索过了,都没有遇到这种问题,于是乎想到了这里和你*** **** 问题描述: >这个是执行完 glide init 后的结果,ty是项目,不知道为什么glide.yaml中package 为 “.” ,我认为它应该为ty,并且glide.yaml中显示需要引入ty/controller 等等,我认为不应该出现本地的包的。所以我再执行glide install时就报错了,因为找不到这些本地文件。 望大神解救!~~~~~ 执行过程:glide init > 执行过程:glide install >![webw...阅读全文
go语言菜鸟教程:http://www.runoob.com/go/go-tutorial.html 实效go编程:http://docscn.studygolang.com/doc/effective_go.html 在线go运行环境:https://tour.golang.org/welcome/1 go的安装:参照这里在Windows上安装非常easy:http://www.runoob.com/go/go-environment.html go中文标准库(Ctrl+f):http://docscn.studygolang.com/pkg/#stdlib go英文包索引与搜索引擎:https://godoc.org/ /*********************************...阅读全文
学习什么语言都得从读文件开始,好像记得一个大神说过计算机编程就是"打开文件,操作,关闭文件"。初学Golang就记一下go语言的文件操作 Read File func main(){ rw,err := os.Open("") if err != nil { panic(err) } defer rw.Close() rb := bufio.NewReader(rw) for { line, _, err := rb.ReadLine() if err == io.EOF { break } //do something fmt.Println(string(line)) } }func main(){ rw,err := os.Open("") if err != nil { panic(...阅读全文
--- FAIL: TestObjFile (0.04s) binutils_test.go:231: SourceLine: unexpected error write |1: broken pipe FAIL FAIL cmd/vendor/github.com/google/pprof/internal/binutils 0.059s 执行./all.bash后报错如上,求大神解...阅读全文
package products import ( "erp/models" "github.com/astaxie/beego/orm" ) type Product_Inventorys struct { Id int64 Name string Formate string Unit string Warehouse string C_name string Purchase string Price string Quantity string } func init() { orm.RegisterModel(new(Product_Inventory)) } //统计仓库存量 func ListInvent()(num int64,err error, invent []Prod...阅读全文
```go func abc() interface{} { blogRows, _ := models.Db.Query("select * from blog where id=1") defer blogRows.Close() catRows, _ := models.Db.Query("select * from category where id=1") defer catRows.Close() return 1 } ``` 这样并没有实现我想要的释放掉两个资源,似乎只释放了一个。于是我又做了以下实验: ```go func abc() interface{} { blogRows, _ := models.Db.Query("select...阅读全文
1.基础知识补充(指针、递增递减语句) 指针 go虽然保留了指针,但是与其它编程语言不同的是,在go当中不支持指针运算以及"->"运算符,而直接采用"." 选择符来操作指针目标对象的成员 操作符"&"取变量地址,使用"*"通过指针间接访问目标对象 默认值为nil而非null 在go中,++与--是作为语句而并不是作为表达式 a := 1 a++ //但不能这样:a := a++,只能作为单独的语句独占一行 2.if判断语句 条件表达式没有括号 支持一个初始化表达式(可以是并行方式) 左大括号必须和条件语句或else在同一行 支持单行模式 初始化语句中的变量为block级别,同时隐藏外部同名变量 func main(){ a := 10 if a:=1 { fmt.Println(a) } f...阅读全文
我有一个文件a.txt 里面的内容为 1,2,3,4,5,6,7 (每个数字单独一行) 然后读取文件的内容 ```go func main() { readFile, err := os.Open("a.txt") buf := make([]byte, 10) for { n, _ := readFile.Read(buf) fmt.Println(string(buf), "读取子节:", n) if n == 0 { break } } } ``` 运行结果为: 1 2 3 4 5 读取子节: 10 6 7 3 // 问题在这 4 5 读取子节: 4 6...阅读全文
用adodb驱动查询mssql数据。如果参数带有大括号。就会显示错误: ServeSrs sql db.Prepare error发生意外。 (语法错误或违反访问规则) 代码如下: db, err0 := sql.Open("adodb", cfg.Cfg["mssql"]) if err0 != nil { log.Println("ServeSrs sql open error") } else { defer db.Close() stmt1, err0 := db.Prepare(` select top ? * from (select a.[Id], a.[CreateDate],a.[PublisherId],a.[NickName],a.[FileSize],a.[Follo...阅读全文
go怎么实现延迟任务执行 main函数执行后 直接退出了 在main函数里面是有select{}可以实现执行完后在退出 ,但是实际项目应用中肯定不能这样做,例如执行一个每20秒执行一个任务 应该怎么做func main() { //go timer1() //timer2() for i :=1; i <10 ; i++ { task :=&Task{i+1,"a",""} task.Start() } } type Task struct { delay int key string data string } func NewTask(delay int,key ,data string) *Task { task :=&Task{ delay:delay, key:key, data:...阅读全文
按照之前的理解go 里面interface可以当成java 里面的object类型 那么理所当然的声明一个如下结构的方法  然后调用该方法传入如下参数  结果却显示类型不匹配,表示不能理解,请大神指教。  continue:进入下一次for迭代 虽然Go是类C的语言,但Go在这些流程控制语句中的条件表达式部分不使用括号。甚至有些时候使用括号会报错,但有些复杂的条件判断需要使用括号改变优先级。 如: if (name == "longshuai" && age > 23) || (name == "xiaofang" && age < 22) { print("yeyeye!!!") } if语句 if condition1 { // do something } else if condition2 { // do something else }...阅读全文
Go基本语法 [TOC] 1、运算符 Go 语言内置的运算符有:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其他运算符。 (1)算数运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 求余 ++ 自增 -- 自减 (2)关系运算符 运算符 描述 == 检查两个值是否相等,如果相等返回 True 否则返回 False。 != 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 > 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 < 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 >= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 <= 检查左边值是否小于等于右边值,如果...阅读全文
现在写了一个tcp服务 然后这个服务里 包含了很多个map 存储一些信息 现在碰到一个问题: 当我需要更改服务里一些内容 如升级 我只能重启 但是重新启动 map的数据就丢失了 所以求大神有没有好的方法 如果重启了 map数据不会丢失 一直保留着 ...阅读全文
代码如下: ```go var temp interface{} err := json.Unmarshal(code, &temp) m := temp.(map[string]interface{}) cmd_name := m["command"] msgId := m["msg_id"] fmt.Println("cmd_name: ", m["command"]) ``` 各位大神,帮忙看一下这段代码有没有什么问题,一个jsonDecode的过程报错了,错误是: > panic: interface conversion: interface {} is nil, not map[string]interface {...阅读全文
go入门新生一枚,请教各位大神,goreman 的参数 -p 具体作用是什么? 我网上查了很多资料也没有介绍的,谢...阅读全文
前端 response 里的 json 带引号  日志里显示正常  代码里是 借用的 https://studygolang.com/articles/7970 这个例子。。 用他的返回值发送 ```go this...阅读全文
写grpc拦截时,调用方法显示类型不一致,但是类型是相同的,而且其他的项目都行,就这个不行   我自己定义了一个结构体,然后,local.Name是一个[]string,local.Ipv是一个map,希望先range出来name之后然后用range $.Ipv.name(刚刚第一个range出来的name)打出该name在map中的对应项,求大神打...阅读全文
迭代版排序 ```go package main import ( "fmt" ) func main() { var arr = []int{6, 5, 3, 1, 8, 7, 2, 4, 9} fmt.Println(arr) fmt.Println(MergeSort(arr)) } func MergeSort(arr []int) []int { var alen = len(arr) var ns = make([]int, alen, alen) var tmp = &arr var stmp = &ns for add := 1; add < alen; add *= 2 { fmt.Println(ad...阅读全文
```go package main import ( "fmt" "runtime" "time" ) func main() { go func() { for i := 0; i < 5; i++ { if i == 3 { runtime.Gosched() } fmt.Println("g1", i) } }() go func() { fmt.Println("g2") }() time.Sleep(1 * time.Second) } ``` 各位大神,请问这个执行结果是什么呀? ...阅读全文
For For语句有三个基本部分组成,以分号隔开: 初始语句:只在第一次循环开始前执行,通常就是变量定义和初始化,这里定义的变量作用范围只在For循环本身。 条件表达式:每一次循环开始前执行,当false结束循环。 post语句:每一次循环结束后执行。 技巧: 初始语句和post语句是可以省略的。 条件表达式也可以省略,就是死循环。 Go语言只有一个循环结构,就是for语句。while语句在Go中也是由for表示。 // for sum := 1 for ; sum < 1000; { sum += sum } // while sum := 1 for sum < 1000 { sum += sum } 注意点: 与其他语言不同,三个语句不需要用括号括起来。 循环体需要用大括号括起来。 I...阅读全文
一、计算示例 package main import "fmt" func main() { a := 100 b := 2 fmt.Printf("%d + %d = %d\n", a, b, Add(a, b)) fmt.Printf("%d - %d = %d\n", a, b, Sub(a, b)) fmt.Printf("%d * %d = %d\n", a, b, Mul(a, b)) fmt.Printf("%d / %d = %d\n", a, b, Div(a, b)) } func Add(x, y int) int { return x + y } func Sub(x, y int) int { return x - y } func Mul(x, y int) in...阅读全文
``` //fw, err := os.Create(zName) // if err != nil { // return nil, err // } // defer fw.Close() buf := new(bytes.Buffer) w := zip.NewWriter(buf) defer w.Close() ``` 我使用这两个创建一个write的时候,写出来的zip文件大小差了20多k,然后buf创建的不可用,但是写文件的可用,有大神解决一下吗...阅读全文
1.基础知识补充(指针、递增递减语句) 指针 go虽然保留了指针,但是与其它编程语言不同的是,在go当中不支持指针运算以及"->"运算符,而直接采用"." 选择符来操作指针目标对象的成员 操作符"&"取变量地址,使用"*"通过指针间接访问目标对象 默认值为nil而非null 在go中,++与--是作为语句而并不是作为表达式 a := 1 a++ //但不能这样:a := a++,只能作为单独的语句独占一行 2.if判断语句 条件表达式没有括号 支持一个初始化表达式(可以是并行方式) 左大括号必须和条件语句或else在同一行 支持单行模式 初始化语句中的变量为block级别,同时隐藏外部同名变量 func main(){ a := 10 if a:=1 { fmt.Println(a) } f...阅读全文
golang实战笔记 一、集合类型 1.值指针和引用类型 a、go语言变量持有相应的值,列外:通道、函数、方法、映射以及切片的引用变量持有的都是引用,以即保存指针的变量。 b、函数或者方法的参数是值传递,即传递的值会被复制一次,因此: 对于布尔变量和数值类型的参数来说,很廉价,每个变量占1~8个字节; 按字符串传也廉价,64位机器16字节,32位机器8字节; 数组代价很大,使用切片替代; 注意:通过使用指针,我们可以让参数的传递成本最低,并且可修改;指针亦可以指向引用类型,但只对切片有用 2. new(Type) === &Type{} 两种语法都分配了一个Type类型的值,同时返回一个指向该值的指针;使用大括号的有点,可以为其指定初始值 3. 数组和切片 a、数组:是一个定长的序列,其中元...阅读全文
```go package main import ( "fmt" ) func main() { var data = []int{6, 5, 3, 1, 8, 7, 2, 4, 9} // var tree *bst fmt.Println(tree) tree = insert(tree, data[0]) //init tree for _, v := range data { tree = insert(tree, v) } printTree(tree, 0, "") for i, str := range fstr { fmt.Println("L", i, str) } // fo...阅读全文
包 Go源文件中非注释的第一行需要指明这个文件属于哪个包,每个 Go 应用程序都包含一个名为 main 的包,package main表示一个可独立执行的程序。要使用其它包的代码需要使用import引入包。 package main import ( "fmt" ) func main() { fmt.Println("Hello, World!") } 标识符 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头时,可以被外部包的代码所使用,而标识符如果以小写字母开头则只能在包内部使用。 函数 函数第一个左大括号不能单独放在一行,否则编译时会报错。 func main() { fmt.Println("Hello, World!") } 行分隔符 在 Go中,一行代表一...阅读全文
Go与C语法相似 Go注释和C语言一样 // 表示单行注释 /**/ 表示多行注释 Go也是由函数构成 Go语言的入口函数也是main,而且一个程序里面只能有一个main, 并且没有main函数程序不能执行 Go语言的基本格式 func main(){ 逻辑语句; } package main import "fmt" func main() { fmt.Println("hello world") } 格式详解: func表示这个一个函数 main表示函数名称 (): 形参列表 {}: 函数体 package main 表示main的包; import "fmt", 表示引包,告诉系统去哪里找printf这个方法 并且引包之后必须通过 包名.函数名称 的方式来调用fmt.printf("H...阅读全文
指针 Go虽然保留了指针,但与其他编程语言不同的是,在Go当中不支持指针运算以及“->”运算符,而直接采用“.”选择符来操作指针目标对象的成员 操作符 “&”取变量地址,使用“ * ” 通过指针间接访问目标对象 默认值为nil而非NULL 递增递减语句 在Go当中,++与– 是作为语句而并不是作为表达式。 选择语句switch 可以使用任何类型或表达式作为条件语句 不需要写break,一旦条件符合自动终止 如希望继续执行下一个case,需使用fallthrough语句 支持一个初始化表达式(可以是并行方式),右侧需跟分好 左大括号必须和条件语句在同一行 12345678910111213141516171819202122232425262728293031323334353637 func...阅读全文
随着用户、业务和数据的增长,由于I/O瓶颈(存储和网络)导致的备份、性能、迁移、升级、只读实例、磁盘容量、Binlog延迟等相关问题渐渐显现;过多数据库存储引擎的类型导致的工程效率以及运维成本显著上升,最好有一种通用的产品技术架构能兼顾不同用户场景的需求。针对以上关系型数据库在云托管环境逐渐暴露出一些问题,阿里云将在9月下旬推出自研通用云数据库PolarDB,是国内首个能从根本解决两大痛点的关键里程碑产品。 阿里云PolarDB是国内首个自主研发的通用云数据库,它拥有商业数据库一样的性能,但价格仅为前者的1/10,进一步降低用户的上云成本,大幅度提升OLTP性能,满足用户在业务连续性、在线业务扩展能力、数据安全上的需求,将彻底颠覆商业数据库的暴利时代。 在产品架构上放弃了通用分布...阅读全文
map是一些键值对的集合,默认值为nil,使用内置函数make创建map: var map_variable map[key_data_type]value_data_type map_variable := make(map[key_data_type]value_data_type) func main() { var numberMap map[string] int numberMap=make(map[string]int) println(len(numberMap)) } map可以使用大括号来初始化: var numberMap =map[string] int{"one":1,"two":2,"three":3} 判断元素是否存在: func main() { var nu...阅读全文
1. if结构 概念:if是用于测试某个条件的语句,如果该条件成立,则会执行if后面由大括号包裹的代码块,否则就会忽略该代码块继续执行后面的语句 其格式如下 if condition { // statement } 2. if-else结构 如果有两个分支就可以在if条件语句的基础上添加else语句 其格式如下 if condition { // statement } else { // statement } 3. 多重if-else结构 多重if-else的格式如下 if condition { // statement } else if condition { // statement } else { // statement } 4. switch结构 switch分支结构如...阅读全文
使用golang语言的interface接口类型创建栈,栈可以操作各种数据类型,非常简洁方便 package main import "fmt" // 栈:先进后出,从栈顶取数据,栈低固定 type Stack struct { Top int // 栈顶 Capacity int // 栈容量 Prt *[]interface{} // 指向栈指针 } // 初始化栈 func (s *Stack) StackInitial(capacity int){ s.Capacity =capacity s.Top =0 // 使用interface类型,所有数据类型都能兼容 m:= make([]interface{},capacity) s.Prt =&m } // 元素入栈,栈顶上升 fun...阅读全文