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

go语言循环语句 for

Go语言中的循环语句只支持for关键字,而不支持while和do-while结构。 sum := 0 for i := 0; i < 10; i++ { sum += i } 无限循环的写法: sum := 0 for { sum++ if sum > 100 { break } } 条件表达式中也支持多重赋值: a := []int{1, 2, 3, 4, 5, 6} for i, j := 0, len(a) – 1; i < j; i, j = i + 1, j – 1 { a[i], a[j] = a[j], a[i] } 使用break,选择中断哪一个循环: for j := 0; j < 5; j++ { for i := 0; i < 10; i++ { if i > 5 { ...阅读全文

博文 2015-07-29 03:00:01 osfipin

GORM update 更新数据

## 查询数据并更新数据 ### 第一种查询语句 `db.Model(&Student).Where("id = ?",1).First(&student)` ### 第二种查询 `db.Model(&Student).Preload("Class").Where("id = ?",1).First(&student)` ### 用相同的语句更新student `db.Model(&student).Update("name":"test")` ### 更新结果 第一种查询的对象更新时,只是更新了students表数据, 第二种查询的对象更新时,不仅仅更新了students表数据,**也同时更新了预加载对象classes的表数据*...阅读全文

博文 2020-05-14 11:34:08 dongjs

golang流程控制if语句

1. if else语句 基本语法 //单条件判断 if condition { //do something } //多条件判断 if condition { } else if condition { //do something } else { //do something } if 单条件先跟个语句然后再做条件判断 if statement;condition{ //do something } //单条件,不带语句的基本判断 package main import( "fmt" ) func main(){ nu := 1 if nu %2 == 0 { fmt.Println("the number is even") } else{ fmt.Println("the numb...阅读全文

博文 2018-07-14 00:30:00 Brin-guo

Golang关键字—— if/else

Golang中,if/else 关键字用于条件判断,如果满足条件就做某事,否则做另一件事: if age >= 18 { fmt.Println("成年人") } else { fmt.Println("未成年") } 多重判断: if score >= 90 { fmt.Println("优秀") } else if score >= 70 { fmt.Println("良好") } else if score >= 60 { fmt.Println("一般") } else { fmt.Println("差") } Golang允许在条件判断语句里声明一个变量,该变量的作用域只在该条件逻辑块内: if score := 40; score >= 90 { fmt.Println("优秀:...阅读全文

博文 2015-05-21 10:00:00 nianhua

go语言条件语句 if else

示例: if a < 5 { return 0 } else { return 1 } 关于条件语句,需要注意以下几点:  条件语句不需要使用括号将条件包含起来();  无论语句体内有几条语句,花括号{}都是必须存在的;  左花括号{必须与if或者else处于同一行;  在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔;  在有返回值的函数中,不允许将“最终的”return语句包含在if...else...结构中,否则会编译失败: function ends without a return statement。 失败的原因在于,Go编译器无法找到终止该函数的return语句。编译失败的案例如下: func example(x int) int { if x == 0 ...阅读全文

博文 2015-07-29 03:00:01 osfipin

golang的++与--

http://godoc.golangtc.com/doc/faq#inc_dec 简单地说, 在golang中++,--操作是语句而不是表达式. 所以a=b++, return x++之类绝对提示错误. 语句是无法放到表达式的位置 Why are ++ and -- statements and not expressions? And why postfix, not prefix? Without pointer arithmetic, the convenience value of pre- and postfix increment operators drops. By removing them from the expression hierarchy altogether...阅读全文

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

Golang教程:(八)if else 语句

文:https://golangbot.com/if-statement/ 这是本Golang系列教程的第八篇。 if 是一个条件语句。if 语句的语法为: if condition { } 如果 condition 为 true,那么就执行 { 和 } 之间的代码。 与其它语言(如C)不同,即使 {} 之间只有一条语句,{} 也是必需的。 if 语句后面可以接可选的 else if 和 else 语句: if condition { } else if condition { } else { } if 后面可以接任意数量的 else if 语句。condition 的求值由上到下依次进行,直到某个 if 或者 else if 中的 condition 为 true 时,执行相应的代码块。...阅读全文

博文 2017-09-08 08:32:07 u011304970

golang break语句可以break掉select,switch,for

坑,以下例子中,原本以为close掉done channel后,循环会退出。但事实上会进入死循环 for { select { case packet := <-s.avPacketChan: s.sendPacket(packet) case <-s.done: //终止channel break } } 原因:[A "break" statement terminates execution of the innermost "for", "switch" or "select" statement.官方文档](https://golang.org/ref/spec#Break_statements)BreakStmt = "break" [ Label ] .If there is a...阅读全文

博文 2018-07-19 12:35:49 暮色伊人

go for select

select里面的break是无法退出for语句的。如下; package main import ( "fmt" ) func main() { var c=make(chan int,1024) quit:=make(chan string,1) c<-1 quit<-"q" for{ select{ case <-c: fmt.Println("here") case <-quit: fmt.Println("quit") break } } } 有几种方法可以退出for循环 1使用goto语句: package main import ( "fmt" ) func main() { var c=make(chan int,1024) quit:=make(chan string,1)...阅读全文

博文 2016-08-12 11:00:07 qii

golang -- mysql & redis

golang mysql 驱动安装 go get github.com/go-sql-driver/mysql go install github.com/go-sql-driver/mysql 以下是select的例子 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { initMySQL("root:112358@tcp(192.168.6.234:3306)/test?charset=utf8") defer db.Close() // Prepare statement for select data stmtOut, err := db.Prepa...阅读全文

博文 2014-10-04 19:26:53 flyking

如何在Struct中定义常量

有如下的Java代码 ``` class Vec { public final double x, y, z; // position, also color (r,g,b) public static final Vec Zero = new Vec(0, 0, 0); } ``` 我使用GO的struct模拟上面的代码 ``` type Vec struct { x, y, z float64 Zero Vec = &Vec{0, 0, 0} //这样的实现不支持,该如何实现 } ``` 但GO好像不支持在struct中编写这样的语句 Zero Vec = &Vec{0, 0, 0}, 请问该如何实现?...阅读全文

go的错误日志

package main import ( "fmt" "log" "os" ) func self_logger(myerr interface{}) { logfile, err := os.OpenFile("d:/golang/log/test.log", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0) if err != nil { fmt.Printf("%s\r\n", err.Error()) os.Exit(-1) } defer logfile.Close() logger := log.New(logfile, "\r\n", log.Ldate|log.Ltime|log.Llongfile) logger.Println(myerr) }...阅读全文

博文 2015-07-24 15:00:05 webyh

go-if、for、switch、goto、break、continue

if语句: package main import "fmt" func main() { //if后面没有括号 if 1 < 2 { fmt.Println("1<2") } var a = 10 //初始化表达式-a的作用范围只在if语句块 if a := 1; a > 1 { fmt.Println("a > 1") fmt.Println(a) } else { fmt.Println("! a > 1") fmt.Println(a) } fmt.Println(a) } 输出如下: 1<2 ! a > 1 1 10 for语句: package main import "fmt" func main() { //第1种形式无限循环 a := 1 for { a++ if a > ...阅读全文

博文 2016-09-13 08:00:02 u013210620

Golang实现带优先级的channel

本博客与RayXXZhang的博客保持同步更新,转载请注明来自RayXXZhang的博客-Golang实现带优先级的channel 一般Go语言同时使用多个channel的方法是使用select/case语句配合<-操作符,比如 select { case <- chan1: // do something case <- chan2: // do something } 但是这种实现方式下chan1和chan2是同等优先级的。如果要实现带优先级的channel则需要用到defalut语句。 在go语言中,如果select/case中没有default子句,则程序会阻塞在select中,直到其中一个case语句接收到了数据。 如果有default语句,则不会阻塞,如果case接收到数据,就执...阅读全文

博文 2016-03-13 21:00:02 hurray123

golang-mongo或查询

遇到一个或关系查询,度娘了下,mongo语句很容易实现:db.RechargeList.find({"IsRead":{$gt:0},"$or":[{"Account":"lyp"},{"DoneeObjId":"59ddcfb45208dc2c0cfb6ff3"}]}),但是在golang里还是有点小麻烦: bson.M{"IsRead": bson.M{"$gt": 0}, "$or": []bson.M{bson.M{"Account": this.Account},bson.M{"DoneeObjId": this.ObjID.Hex()}}...阅读全文

博文 2017-11-25 16:00:01 ChengShuKaiShi

golang 使用sql语句操作数据库的方法

func (m xxxstruct) insertxxx() (bool,string){ sqlquery :="insert into tables_name(id,name,email,content,) values(%v,%v,%v,%v)" sqlquery =fmt.Sprintf(sqlquery,m.id,m.name,m.email,m.content) ok,desc :=queryexecmysql(sqlquery) if ok { return false,desc } return true,"ok"}func queryexecmysql(parmam string)(bool string){ o :=orm.NewOrm() o.Using("deaful...阅读全文

博文 2017-02-09 17:32:12 gdutccd

关于Go语言中defer关键字

在Go语言中,defer语句会在该函数结束的时候被调用,即使后面的语句运行时出现异常了defer语句仍然会被执行。 需要注意的是,如果defer语句中引用了参数,则该参数的值将是程序到defer这一行的时候的值,而与后面的语句没有关系。 以下为简单测试: package main import "fmt" func main() { func_b_0() func_b_1() func_b_2() } func func_b_0() { fmt.Println("func_b_0...top") a := 5 defer fmt.Println("a=", a) a++ } func func_b_1() { fmt.Println("func_b_1...top") a := 5 defe...阅读全文

博文 2015-06-17 23:00:51 books1958

golang 学习第一篇 hello go

package main import "fmt" func main(){ fmt.Println("Hello go!") } 知识点: 1.每个go程序都必须包含一个package main 2.每个package main中都必须有一个func main 3.golang函数定义:func 函数名 参数列表 返回值列表 函数体 4.书写格式: 4.1 函数体的开始花括号 func 函数名 参数列表 返回值列表之后的同一行 4.2 函数体中的语句可以不以 “;”结尾,除非想把多个语句写在同一...阅读全文

博文 2014-10-04 19:25:58 songqt

switch _ golang

switch 1: 在条件语句中,可以写多条的语句 2: 也可以不添加语句 package main import ( "fmt" "time" ) func main() { i := 2 fmt.Println("write ", i, " as ") switch i { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") } switch time.Now().Weekday() { case time.Saturday, time.Sunday: fmt.Println("it's the weekend") default: fmt.Println("it's a w...阅读全文

博文 2015-03-13 03:00:01 jackkiexu

go语言示例:if/else语句

if else分支在go语言里是简单明了的。 这里有个简单的例子。 if语句可以没有else。 可以在条件语句前添加别的语句。这个语句中声明的变量的作用域在所有的分支中。 注意:在go语言中条件语句没必要带圆括号。但是分支中必须有大括号。 在go语言里面没有三元条件语句,所以即使是简单的条件语句你也必须使用全机构的if语句(就是说go里没有个?:表达式 )。 Plain Text code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package main import "fmt" func main() { if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Print...阅读全文

博文 2014-10-04 19:26:01 xming4321

golang 数据类型的转换

【转换】的写法: 1、接口类型 → 普通类型,用 I.(A) //在线测试地址:https://play.golang.org/p/LhEB2qLiMs //I.(A) 只能用在switch里面 2、普通类型 → 普通类型,用 A(B) 3、gob包里面的 Encode 和 Decode //在线测试地址: https://play.golang.org/p/CvTr0vZWvc 【判断】的写法: 4、接口类型 → 未知类型,用 I.(type) //Common-Ok断言,只能在switch语句里面,用于判断类型,而不是转换 5、reflect.TypeOf 、 reflect.ValueOf reflect.ValueOf 返回值,不过这个值类似于引用,可以做很多直接的操作, refle...阅读全文

博文 2014-10-04 19:25:58 ggaaooppeennngg

goClipse debug遇到问题 Failed to execute MI command:....

我的环境是 ubuntu16.04+eclipse+goClipse 下面是我的源码: package main import ( "fmt" ) func main() { arr := []int{1, 4, 3, 2, 5, 7} fmt.Println(arr) } 目的是看下怎么debug go源码, 在println语句前面加了断点,看次时arr的值,
***问题来了*** ![Screenshot from 2017-06-28 10-04-22.png](http://studygolang.qiniudn.com/170628/952c63734b79f66...阅读全文

请教各位大神有什么GO的框架或者类库能将sql语句解析成以下结果?

因为项目需求现在需要将sql语句解析,并得到它解析出的每块对应类型的名称: ``` sql1: INSERT INTO QBAdminGroup.abmc_contacts(id, name) VALUES (1, 'jimmy') 输出1: 'DML', 'Keyword', 'Identifier', 'Keyword', 'Parenthesis' sql2: select 2 from admin 输出2: 'DML', 'Integer', 'Keyword', 'Keyword' ``` 类型名可以跟上文的不一样,或者是整型如1,2,3....的都可以接受,只要是能划分块并区分块的类型即可。万分感谢...阅读全文

Golang select语句退出循环

package main import ( "fmt" "time" ) func main() { done := make(chan interface{}) go func() { time.Sleep(5 * time.Second) close(done) }() workCounter := 0 loop: for { select { case <-done: break loop default: } workCounter++ time.Sleep(1 * time.Second) } fmt.Printf("Achieved %v cycles of work before signaled to stop.\n", workCounter) } image.pn...阅读全文

博文 2019-06-11 10:02:41 FredricZhu

go语言中的if

var maptest = make(map[int]string) maptest[1] = "a" maptest[2] = "b" maptest[3] = "c" maptest[4] = "d" for key, value := range maptest { if key == 1 { fmt.Println(key) } else if key == 2 { fmt.Println(value) } else if key == 3 { fmt.Println(value) } else { fmt.Println(value) }//只有在else结束后if才会开始下一个 if key != 2 { fmt.Println(value) } }//当key=1时下面的语句只...阅读全文

博文 2014-10-04 19:26:46 SSSR

if else _ golang

if else 在 golang package main import ( "fmt" ) func main() { if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } if 8%4 == 0 { fmt.Println("8 is divisible by 4") } if num := 9; num < 0 { fmt.Println(num, "is negative") } else if num < 10 { fmt.Println(num, "has 1 digit") } else { fmt.Println(num, "has multiple digits") } } 7 i...阅读全文

博文 2015-03-13 03:00:01 jackkiexu

golang循环控制语句

for循环第一种 func main() { var num = 1 for { if num > 5 { break } num++ fmt.Println(num) } fmt.Println("程序结束!") } 第一种输出结果 API server listening at: 127.0.0.1:33051 1 2 3 4 5 程序结束! Process exiting with code: 0 for循环第二种形式 func main() { var num = 1 for num <= 5 { num++ fmt.Println(num) } fmt.Println("程序结束!") } 输出结果 API server listening at: 127.0.0.1:36655 ...阅读全文

博文 2019-07-28 02:32:40 iXiAo9

go数据库操作

package main import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main() { /* //打开数据库 db, err := sql.Open("mysql", "root:123@/tsong") if err != nil { panic("open database fail") } //链接数据库 err = db.Ping() if err != nil { panic("connect database fail") } //链接数据库成功,就可以正确的操作数据库了,执行数据库语句 data, err := db.Query("select * from tsong where coun...阅读全文

博文 2016-06-06 01:00:01 u010165367

golang中Switch 语句详解

Switch 语句详解 switch 第一种表达式 func main() { num := 3 switch num { case 1: fmt.Println("num=1") case 2: fmt.Println("num=2") case 3: fmt.Println("num=3") default: fmt.Print("没有条件成立") } } 输出结果 API server listening at: 127.0.0.1:22973 num=3 Process exiting with code: 0 num := 3为全局变量 switch 第二种表达式 func main() { num := 3 switch { case num <= 1: fmt.Println(...阅读全文

博文 2019-07-29 05:32:40 iXiAo9

Go学习笔记之:Switch 语句

当条件判断分支太多的时候,我们会使用switch语句来优化逻辑。 package main import "fmt" import "time" func main() { // 基础的switch用法 i := 2 fmt.Print("write ", i, " as ") switch i { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") } // 你可以使用逗号来在case中分开多个条件。还可以使用default语句, // 当上面的case都没有满足的时候执行default所指定的逻辑块。 switch time.Now().Weekday() { case ti...阅读全文

博文 2014-11-27 23:00:03 Goopand

Go语言学习笔记3——控制语句

有人说,程序是这个世界上最简单的东西,因为你只需要知道if、for、switch就足够了。事实上,程序也是由判断和循环两种语句组成。程序员更喜欢和机器打交道,而不是和人打交道,是因为程序的世界里更简单,更单纯,没有复杂的关系,是1不会为0、是真也不会为假,一切的一切都是那么真实,不虚幻。此刻,我坚信技术宅们比谁都了解这个世界,比谁都看得更清楚,所以他们将自己宅起来,出淤泥而不染吧。 开门一段土嘈完后,发现本文没有什么好写的了。控制语句不就"判断和循环"吗? 写过”hello,world“的人,没理由没写过if和for。Go的控制语句相比其他语言只是形不同,而神相似。因此,具体的语法我也不想记录了。这里列举两点个人不爽的地方。 1、Go目前不支持if-else这种结构,真是各说各有理阿。具体看...阅读全文

博文 2014-10-10 07:00:00 Marcky

【golang】select{}中break的易错点

一个select语句用来选择哪个case中的发送或接收操作可以被立即执行。它类似于switch语句,但是它的case涉及到channel有关的I/O操作,阻塞监听IO操作 在项目中我们可能需要无限监听某个IO操作,在满足条件后跳出操作。如: tick := time.NewTicker(2 * time.Second) var a int for { select { case <-tick.C: a++ if a > 2 { break } } time.Sleep(time.Second * 1) fmt.Println("循环还在执行") } 可能有人觉得,break会直接打破循环,跳出循环执行。但当执行的时候,却发现程序在持续输出"循环还在执行"。这是因为break仅与select有...阅读全文

博文 2020-04-16 03:32:48 dongzaidong

GO条件判断

if语句:package main import ( "fmt" ) func main() { var a int = 1 var b int = 2 var c bool = true var d bool = false //var c int //c = a + b //fmt.Printf("第一行 - c 的值为 %d\n", c ) if (a == b){ fmt.Printf("第一行 - a 等于 b\n" ) } else { fmt.Printf("第一行 - a 不等于b\n") } if ( a < b ) { fmt.Printf("第二行 - a 小于b\n") } else { fmt.Printf("第二行 - a 不小于b\n") } if ( a > ...阅读全文

博文 2020-04-17 00:33:13 赛里

golang tips

回调函数的用法 //一个记录日志的类型:func(string) type saveLog func(msg string) //将字符串转换为int64,如果转换失败调用saveLog func stringToInt(s string, log saveLog) int64 { if value, err := strconv.ParseInt(s, 0, 0); err != nil { log(err.Error()) return 0 } else { return value } } //记录日志消息的具体实现 func myLog(msg string) { fmt.Println("Find Error:", msg) } func main() { stringToInt(...阅读全文

博文 2014-10-04 19:26:45 kuerant

go语言 Hello World

go语言是google发布的编程语言,已经有了第一个正式版本 go编译速度很快,是编译型语言 hello.go package main import "fmt" func main() { fmt.Printf("Hello,World!") }运行结果: package main 是指go文件的开头标志 import "fmt" I/O库,是将fmt库加载到文件中来 func main() go程序执行的第一个函数 fmt.Printf fmt库中的输出语...阅读全文

博文 2014-10-04 19:26:02 chuangrain

GO 学习笔记 (二) for , if , switch

for:Go 只有一种循环结构—— for 循环。( 可以让前置、后置语句为空 ) if:跟 for 一样, if 语句可以在条件之前执行一个简单的语句。 由这个语句定义的变量的作用域仅在 if 范围之内。 switch:switch 的条件从上到下的执行,当匹配成功的时候停止。 type User struct { Name string Age int Sex bool } func main() { for i := 0; i < 10; i++ { fmt.Println(i) } row1 := []User{ User{"man1", 22, true}, User{"man2", 23, true}, } for _, user := range row1 { if user....阅读全文

博文 2015-10-05 17:00:01 best_raven

go select语句

看介绍说,go的select与switch类似。但其实有很大不同 switch执行是顺序的,而select是随机选择: package main import ( "fmt" ) func main() { c1:=make(chan int,1024) c2:=make(chan int,1024) for i:=0;i<1000;i++{ c1<-1 c2<-1 fmt.Println("i===",i) select{ case <-c1: fmt.Println("from c1") case <-c2: fmt.Println("from c2") } } } 结果: i=== 0 from c1 i=== 1 from c2 i=== 2 from c1 i=== 3 from ...阅读全文

博文 2016-08-12 11:00:07 qii

Go语言之循环语句

```灰子学技术: 原文链接:https://mp.weixin.qq.com/s/ITS8CjBup5ZmXPsdz30RQQ``` Go语言中的循环语句只有for,没有while和do/while这两种格式。 Go语言中的for语句的表达形式有三种实现方式: **1、基于计数器的实现。** 语法规则如下所示,这与C++的for循环实现模式基本类似,不过没有()。 ``` for i := 0; i阅读全文

博文 2019-09-08 17:05:36 ZhDavis

chan使用注意

package main import ( "fmt" ) func main() { c := make(chan int, 0) go func() { i := 10 for i > 0 { c <- i i-- } close(c) }() for { fmt.Println("loop") select { case _, ok := <-c: fmt.Println("recv:", ok) if !ok { fmt.Println("break for") break } } } } 不能break for语句,貌似break了select语句,程序一直在死循环,不能正常退出!...阅读全文

博文 2017-03-21 02:43:16 756445638

Go语言学习三 :循环语句

package main import "fmt" func main() { var b int = 15 var a int numbers := [6]int{1, 2, 3, 5} //六个数的数组 // for 循环,这里只有一个for语句 for a := 0; a < 10; a++ { fmt.Println(a) } for a < b { a++ fmt.Println(a) } for i, x := range numbers { //取序号和值 fmt.Println(i, x) } //循环嵌套 var i, j int for i = 2; i < 100; i++ { for j = 2; j <= (i / j); j++ { if i%j == 0 { b...阅读全文

博文 2016-03-30 00:00:03 shawncheer

go语言:switch语句

go语言专门用于多条件分支语句。 这里有个基本的switch语句。 在同一个case语句中,可以用逗号分隔不同的条件。在这个例子中,我们使用默认的default语句。 没有表达式的switch语句可以替代if/else语句。这里我们显示了case表达式可以不是常量。 Plain Text code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 package main import "fmt" import "time" func main() { i := 2 fmt.Print("write ", i, " as ") switch i { case 1: fmt.Pr...阅读全文

博文 2015-06-17 23:01:41 xming4321

Go中的延迟处理 defer

defer 语句 该语句表示预定对一个函数进行调用,调用的函数被称为延迟函数 eg: defer fmt.Println("thye finishing touches.") defer fmt.println("11") 该语句在函数结束时被调用,其执行顺序和书写顺序相反, 即先打印 11,再打印 the finishing touches, 即在return语句调用之前执行该语句. 即异常发生时,也会调用该函数 该语句一般用于收尾工作和回收资源. 匿名函数 defer func(i int){ fmt.printf("%d",i) }(i) 与c中的atexit函数作用相...阅读全文

博文 2016-11-24 11:00:01 u014660247