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

Go学习笔记之:if else 条件判断

Go语言的条件判断结构也很简单。 package main import "fmt" func main() { // 基本的例子 if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } // 只有if条件的情况 if 8%4 == 0 { fmt.Println("8 is divisible by 4") } // if条件可以包含一个初始化表达式,这个表达式中的变量 // 是这个条件判断结构的局部变量 if num := 9; num < 0 { fmt.Println(num, "is negative") } else if num < 10 { fmt.Println(num, "has ...阅读全文

go语言html/template解析问题

最近使用go语言html/template包进行一些静态化工作,发现template对于小于号(左尖括号<)不能正确处理,反复研究,没有弄清楚怎么回事,后来变通了一下,先对模板进行EscapeString编码,格式化以后,再进行UnescapeString编码,问题得到解决;但还是没弄清楚template为什么对单独的小于号(左尖括号<)无法正确格式化,但发现如果左尖括号的右边有一个或多个右尖括号(>),则能正确解析格式化,而template源码包读起来很费解,最终没有弄明白,希望知道的同学能告知原因;贴上我的解决方案,以供参考 package mytemplate import ( "bytes" "html" "html/template" "os" "strconv" "time" )...阅读全文

golang之数组,slice,map

一 、==========================array 数组=================================== 索引只能是 int 整数型 所以不管几维数组 索引都是 整数 slice 是动态数组 索引也是 整数型 map为key 所以 可以为 整数 也可以为 字符串型 注意slice和数组在声明时的区别:声明数组时,方括号内写明了数组的长度或使用...自动计算长度,而声明slice时,方括号内没有任何字符。 arr1 := [10]int{1,2,3,4} //数组,长度为10,只有4个元素指定,其它的元素值默认为0 arr2 := [...]string{"a","b","c"} //数组,长度自适应,这里长度为3 s1 := []int{1,2,3,4...阅读全文

go的变量作用域

go的变量作用域是花括号确定的,任一变量的作用域只在自身所处的花括号范围内 if, for等可以有初始化表达式的,其作用域还要高于其后的花括号一层 package main func main() { x:=1 println(x) for x:=3;;{ print(x," ") break } println(x) if x:=5; true { print(x," ") } println(x) for { x:=7 print(x," ") break } println(x) if true { x:=9 print(x," ") } println(x) if x:=2; true { print(x," ") x:="abc" print(x," ") } println(x)...阅读全文

博文 2013-07-29 21:33 刘地

[Golang]也许有你不知道的,Array和Slice(1)

Golang中的array 在golang中,array是同一类型的元素的有序排列,长度不能更改,占用内存上的一段连续空间。 1)基础 首先看看array的声明: [plain] view plaincopyprint?var justiceArray [3]string var justiceArray [3]string 以上声明了justiceArray是为有3个元素的string数组,括号里面的数字是必须的,不能省略。 另外说明一下,[3]string与[2]string是两种不同类型的array。 现在对其赋值:[plain] view plaincopyprint?justiceArray = [3]string{"Superman", "Batman", "Wonder Wom...阅读全文

博文 2015-03-06 11:29 abv123456789

从例子中学习 go 语言 —— 基本语法

go 语言或是 golang 官网上有个 tour。从例子中学习一门语言虽然具有片面性,但是往往是一个入门的好方法;如果一开始就去是看手册的话,有些凌乱,摸不着头脑,有点看字典的味道。所以,先从例子中学习,然后再系统的学习,应该是个不错的方法。 本篇文章基本按照 tour 的步骤,跑跑例子,从例子中去猜测/分析 go 的语法以及结构等,一定程度上可以锻炼一下,观察和分析能力。 hello,world: package main import "fmt" func main() { fmt.Println("hello,world") // 输出 hello,world } 1). package 将程序打包; 2). import 导入其他包,包名用双引号引住;fmt 包 —— 应该是 fo...阅读全文

Go 边看边练 -《Go 学习笔记》系列(四)

上一篇: Go 边看边练 -《Go 学习笔记》系列(三) 2.1 表达式 语言设计简练,保留字不多。 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 2.2 运算符 全部运算符、分隔符,以及其他符号。 + & += &= && == != ( ) - | -= |= || < <= [ ] * ^ *= ^= <- > >= { } / << /= <<= ++ = := , ; % >> %= >>= -- ! ... . : &^ ...阅读全文

[Go] --- 变量的声明和定义

Email : hahayacoder@gmail.com 1 Go中变量的声明和JavaScript很像,使用var关键字 2 Go中变量的声明、定义有好几种形式 //声明并初始化一个变量 var m int = 10 //声明初始化多个变量 var i, j, k = 1, 2, 3 //多个变量的声明(注意小括号的使用) var( no int name string ) //声明时不指明类型,通过初始化值来推导 var b = true//bool型 //一种简单的方式等价于varstrstring="Hello" str := "Hello" //Go中有一个特殊的变量_任何赋给它的值将被丢弃 _, Ret:= 2, 3 3 Go的编译器对声明却未使用的变量在报错 4 和C语言一样...阅读全文

博文 2013-03-31 10:14 qiurisuixiang

Golang(Go语言)的三大设计目标

1.编译快 2.运行快 3.容易写 一般语言都只满足其中一两者,但是Go语言却找到了一个平衡点,同时满足这三个要求。目前比较适合做相对底层一点的东西,比如云计算、数据库、服务器后端等方面的,有些人可能不喜欢golang的语法,认为限制太多,比如大括号不能抬头等,不然编译都不能通过,但是我觉得这样很好,就不存在各种编程风格之争,大家格式都写得一样,习惯了就很容易阅读和理解别人的代码。还有其大繁至简的设计理念,使得用很少的代码量就能完成很复杂的开发工作,只要习惯了语法,写起代码来很轻松~~ C/C++这种类型语言的优点是运行速度快,缺点是编译较慢,语言诞生很早,由于历史原因,C++起初本身并不完美,规范经过不断完善修改并兼容,导致C++很复杂,虽然性能好,但是开发效率不是很高。 Java、.NE...阅读全文

博文 2016-02-20 18:45 QQ245671051

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-08-13 16:18 u013210620

Go语言学习(三)枚举和类型

package main import "fmt" //1.枚举的使用 // 枚举指一系列相关的常量,比如下面关于一个星期中每天的定义。通过上一节的例子,我们 // 看到可以用在 const 后跟一对圆括号的方式定义一组常量,这种定义法在Go语言中通常用于定义 // 枚举值。Go语言并不支持众多其他语言明确支持的 enum 关键字。 // 下面是一个常规的枚举表示法,其中定义了一系列整型常量: const( Sunday = iota //0 Monday //1 Tuesday //2 Wedenesday //3 Thursday //4 Friday //5 Saturday //6 //同Go语言的其他符号(symbol)一样,以大写字母开头的常量在包外可见。 //以上例子中 num...阅读全文

golang Html 正则

文链接:http://outofmemory.cn/code-snippet/2092/usage-golang-regular-expression-regexp-quchu-HTML-CSS-SCRIPT-code-jin-maintain-page-wenzi package main import ( "fmt" "io/ioutil" "net/http" "regexp" "strings" ) func main() { resp, err := http.Get("http://www.baidu.com") // resp, err := http.Get("http://www.163.com") if err != nil { fmt.Println("http get...阅读全文

博文 2015-07-08 19:22 zxlvxj

Go语言调用C语言函数的坑

最近在看人民邮电出版社 许式伟 吕桂华编著的《Go语言编程》,看到【1.2.9 语言交互性】小节的cprint.go。未按照书中源代码格式编写,而是把 import "C" 和 import "unsafe" 合并放入小括号中并和注释结束符 */ 间隔了一行,这也是大多数Go语言学习和开发者经常使用的代码风格,我修改后的代码如下: package main/*#include #include */import ( "C" "unsafe")func main() { cstr := C.CString("Hello, world") C.puts(cstr) C.free(unsafe.Pointer(cstr))} 结果在我的Windows 7 64...阅读全文

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 函数体中的语句可以不以 “;”结尾,除非想把多个语句写在同一...阅读全文

博文 2013-04-25 10:16 songqt

golang中的坑

package main import ( "fmt" ) func main() { t1 := []int32{1, 2, 3} fmt.Println(printSelf(t1)) fmt.Println(t1) fmt.Println("................................") t2 := &[]int32{1, 2, 3} fmt.Println(&t2) t3 := printAddr(t2) fmt.Println(&t2, *t2) fmt.Println(&t3) fmt.Println("--------------------------------") t4 := []int32{1, 2, 3} fmt.Println(t4) print...阅读全文

博文 2016-03-06 11:44 samete

go 速学 - 05 - 流程控制

目录 流程控制 判断语句 if 循环语句 for 跳转语句 switch 摘要 if,for 的三种形式,switch两种形式,switch 与 break 流程控制 判断语句 if 基本语法 if 后没有小括号 支持变量初始化,初始化的变量要以 “;” 结尾 使用变量初始化产生的变量,作用域仅在 if 语句之内 if 1 < 2 { fmt.Println(1) //1 } if a := 5; a > 3 { //变量初始化 a fmt.Println(a) //5 } //fmt.Println(a) 超出作用域 循环语句 for for 语句有三种形式 第一种 a := 1 for { a++ if a > 3 { break } fmt.Print(a, ":") //2:3: }...阅读全文

博文 2015-04-02 12:29 mrseasons

Go by Example: If/Else

Go语言中的If和else的分支结构非常清晰明了。 package main import "fmt" func main() { // 这是一个基本的例子 if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } // 只有if条件的情况 if 8%4 == 0 { fmt.Println("8 is divisible by 4") } // if条件可以包含一个初始化表达式,这个表达式中的变量 // 是这个条件判断结构的局部变量,该变量在所有分支中都是可用的 if num := 9; num < 0 { fmt.Println(num, "is negative") } else if num <...阅读全文

博文 2014-11-23 09:05 codemanship

Go-基础学习总结

1,背景:GO是强类型语言,其产生的原因是因为开发者认为C#,JAVA,C++太过繁重。而C也太过老旧,开发者想模仿C开发出一种接近底层的第三代语言。在当时多核时代盛行的背景下GO顺应潮流,坚持着简单的原则创造了GO 2,基础语法: 基本数据类型:int16 int32 int64 float32 float64 sring complex 3,定义 数据定义: int int[] slice var i int;i=0; var i int =0' var i,j int=0,0; i:=0 i,j:=0,0 var arr =[]int{0,1} var arr =[10]int; arr:=[10]int arr:=[...]{0,1,2,3} 指向数组的指针 这种反人类的设计,个人表...阅读全文

学习go语言的第一天

Go语言优势: •静态语言,强类型。静态编译能帮我们检查出来大量的错误,go的强类型甚至变态到不支持隐式的类型转换。 •gofmt,应该这是我知道的第一个官方提供统一格式化代码工具的语言了。有了gofmt,大家的代码长一个样了,也就没有花括号到底放到结尾还是新开一行这种蛋疼的代码风格讨论了。因为大家的代码风格一样,所以看go的代码很容易。 •天生的并行支持,因为goroutine以及channel,用go写分布式应用,写并发程序异常的容易。没有了蛋疼的callback导致的代码逻辑割裂,代码逻辑都是顺序的。 •性能,go的性能可能赶不上c,c++以及openresty,但真的也挺强悍的。在我们的项目中,现在单机就部署了一个go的进程,就完全能够胜任以前200个python进程干的事情,而且C...阅读全文

google go 语言介绍(二)

分号 你可能已经注意到我们的程序没有分号。在Go的代码中,唯一你经常可以看到分号的地方是分割for循环的子句。在每句语句的结尾分号并不是必须的。 实际上,go像C或Java这样的常规语言一样使用分号,但是这些分号被自动的插入到语句的结尾处,你不需要手工的去输入这些分号。 关于分号更细节的信息可以查看语言规范,但是在本文中你所要知道的就是你不需要在语句末尾加上分号。(如果要在一行中写多个语句,你就需要在语句结尾加上分号)作为特别的帮助,你可以在大括号关闭符号前的语句省略分号。 这种方式提供了一个清晰的,无分号的代码。一个值得注意的地方是,撰写例如if这样的语句,大括号开始符号必须与if处于同一行;否则可能会导致编译错误或者得到一个错误的结果(译注:类似于c/c++/java语言的 if(xx)...阅读全文

博文 2010-01-13 08:29 fffvvvzz

Golang中的array与slice(1)

这文章分为三部分,第一、二部分分别详细讲述golang中的array与slice,第三部分则讨论slice的使用与技巧。这文章不是教程,需要基本的golang知识。 关于第一、二部分,这里有一篇文章比我叙述得更好(自备爬梯):http://blog.golang.org/go-slices-usage-and-internals 看过这文章的朋友可以直接忽略此文一二部分。 该篇是第一部分,另外两篇的链接: Golang中的array与slice(2) Golang中的array与slice(3) ------- Golang中的array 在golang中,array是同一类型的元素的有序排列,长度不能更改,占用内存上的一段连续空间。 1)基础 首先看看array的声明: var justi...阅读全文

博文 2013-08-26 12:03 u011649436

go语言总结第一章

需要注意的地方:1.整型数据的溢出; 一个int8型整数的最大值是127,如果在加上一就是-128.2.特殊类型:复数: 复数实际上由两个浮点数构成,一个表示实部,一个表示虚部。3.Go语言规定,函数,控制结构等的左大括号“{”必须和函数声明或控制结构放在同一行。如果将左大括号放在函数声明,控制语句的下一行,编译器会在左大括号的前方自动加一个大括号,可能导致程序异常。4.Go对多语言的支持。5.函数名首字母为小写,即为private 函数名首字母为大写,即为publi...阅读全文

go语言学习笔记

Go语言学习基本类型Bool 取值范围:true,false (不可以用数字代替)Int/uint 根据平台可能为32或64位int8/uint8 长度:1字节 取值范围-128~127/0~255byte(uint8别名)int16/uint16 int32/uint32 int62/uint64float32/float64 长度:4/8字节 小数位:精确到7/15小数位复数:complex64/complex128 长度:8/16字节 足够保存指针的32位或64位整数型零值是变量的默认值 在submit里面ctrl+b是打开我们的测试窗口,go run 是运行程序 Go语言中只能显示转换 [:]=()浮点型和布尔型不能进行转换...阅读全文

博文 2016-05-24 14:03 LiLiliang

golang 中打印函数问题

/** * Created with IntelliJ IDEA. * User: zhangjian * Date: 13-5-13 * Time: 下午1:51 * To change this template use File | Settings | File Templates. */ package main import "fmt" import "unsafe" func main() { a_int := []int{1,2,3,4,5} ai:=reverse(a_int) for aa := range ai{ //1.这个地方"%d "中%d后面一定要加空格,不然golang会认为是字符串%d,直接输出 //fmt.Printf这个函数要求()括号里面的必须是字符串...阅读全文

Go 控制结构

在 Go 中只有很少的几个控制结构 。这里没有 do 或者 while 循环,只有 for。有(灵活的) switch 语句和 if,而 switch 接受像 for 那样可选的初始化语句。还有叫做类型选择和多路通讯转接器的 select。同 C 相比语法有所不同:无需圆括号,而语句体必须总是包含在大括号内。 1、if-else Go 中的 if 和 C 语言中的 if 很相似,区别主要有三点: 执行体必须要有大括号,且左大括号必须和 if(或 else) 在同一行即使只有一条语句; 条件语句不需要圆括号; 条件语句中可以包含初始化语句,通常用于设置一个(局部)遍量。 if x > 0 { // 左括号必须在同一行 return y } else { return x } if f, err...阅读全文

Go 语言基础语法

Go 语言基础语法上一章节我们已经了解了 Go 语言的基本组成结构,本章节我们将学习 Go 语言的基础语法。Go 标记Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:fmt.Println("Hello, World!")6 个标记是(每行一个):1. fmt 2. . 3. Println 4. ( 5. "Hello, World!" 6. )行分隔符在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。以下为两个语句:fmt.Println(...阅读全文

博文 2015-11-22 11:33 u011225629

第3课 Go控制,循环,选择,跳转语句

package main import ( "fmt" ) func main() { /* Go虽然保留了指针,但是其与其他编程语言不同的是,在Go中不支持 指针运算以及“->”运算符,而是直接采用“.”选择符来操作指针目标 对象的成员 操作符“&”取变量地址,使用“*”通过指针间接访问目标对象 默认值nil而非NULL */ a := 1 var p *int = &a fmt.Println(*p) //输出1 //指针 /* ++和--是作为语句而非表达式 表达式可以放在=右边 所以现在a++只能作为单独的一行 */ a-- fmt.Println(*p) //输出0 if 1 < 2 { //左大括号必须放在if同一行 } //if的一种用法 if a := 1; a > 1 { ...阅读全文

博文 2016-07-27 22:42 lhdalhd1996

请教同行们一个关于go方法的问题

假设定义一个结构体 ```go type A struct{ } ``` 定义一个方法: ```go func (self *A) SayHi() { fmt.println("你好") } ``` 我想问方法第一个括号里加 `*` 与不加 `*` 有什么区别。测试好像没什么区别。请高手指点下。 我是在网上看到下面这句话才想问的,我不太懂。 ``` 对于接口的执行机制: 1.T仅拥有属于T类型的方法集,而*T则同时拥有(T+*T)方法集 2.基于T实现方法,表示同时实现了interface和interface(*T)接口 3.基于*T实现方法,那就只能是对interface(*T)实现接口 ``...阅读全文

【001:go语言的一些语法基础】

1. 循环语句 Go只有for一个循环语句关键字,但支持3种形式 初始化和步进表达式可以是多个值 条件语句每次循环都会被重新检查,因此不建议在条件语句中 使用函数,尽量提前计算好条件并以变量或常量代替 左大括号必须和条件语句在同一行 1.1 for 的无限循环 1 for { 2 //break; 3 //等同 while 4 } 1.2 for 带条件表达式 1 if a <= 3 { 2 //操作 a 3 } 1.3 for 经典样式 1 for i := 0; i < 3; i++{ 2 //code 3 } 1.2 switch 选择 可以使用任何类型或表达式作为条件语句 不需要写break,一旦条件符合自动终止 如希望继续执行下一个case,需使用fallthrough语句 支持一...阅读全文

博文 2016-06-20 00:47 yexiaopeng

go学习笔记01-基本示例

//请保持文件编码为UTF-8 package main //程序入口包必须是main import "fmt" //导入使用功能的包,可以在前面使用别命 var a int //定义全局变量初始为零,类型在后面。未指定情况,标准类型为零,其它为nil var ( //多赋值方式 a1 int a2 string a3,a4=1,2 ) var i=2013 func main(){ //括号不能换行 b:=3 //可以省略var自动推导类型,:仅函数内使用 c,d,e:=4,5,6 //平行方式赋值 f:=[]string{"str1","str2"} //初始大括号并赋值给数组, g:=[...]int{4:0} //使用索引倒序确定范围并填充一个自动扩展大小的数组 h:=[2][2]s...阅读全文

别致的语言GO(GO语言初涉)

最近由于各种原因(好吧,其实是犯懒)已经许久没有再写新的博文了!最近正好在学习一门新的语言,所以正好记录一下自己的学习成果!最近利用每天晚上下班回来后的几小时,学习了Google开发的Go语言,算是对其有了个基本的了解。确实是一门漂亮别致的语言。 首先go语言:是谷歌2009年11月10日推出的一种全新的编程语言,它可以在不损失应用程序性能的情况下降低代码的复杂性。它的主要特点有:简洁 快速 安全 并行 有趣 开源 支持泛型编程,内存管理,数组安全,编译迅速等!并且,它是一门静态,编译型的语言!是一种通用型的语言,可以用来开发任何软件——从普通应用到系统编程。虽然这种语言还不成熟,各种语言特征和规格还在变化,但程序员如今已经用它来开发工作了。 详细来说,它的设计目标有如下几点(来自wikip...阅读全文

[Go] --- 控制结构

Email : hahayacoder@gmail.com 1 Go语言中常用的控制结构有:if语句、switch语句和for循环 2 if语句和C语言很类似,但是判断条件没有圆括号括起来,必须有大括号 //if var value int = 2 if value%2 == 0 { fmt.Printf("%d是偶数\n",value) } //if...else if value%2 == 0 { fmt.Printf("%d是偶数\n",value) } else { fmt.Printf("%d是奇数\n",value) } //if多分支 if value < 0 { fmt.Printf("%d是负数\n",value) } else if value == 0 { fmt.Pr...阅读全文

博文 2013-03-31 17:39 qiurisuixiang

新手学习go语言

学习go语言 过程中遇到的问题 总结: 问题1:写一个hello world unexpected semicolon or new line 函数大括号 不能单独起一行 错误代码 func init() { fmt.Println("hello world"); } 正确代码 func init(){ fmt.Println("hello world"); } 问题2:command -line-arguments 代码: func main(){ fmt.Println("欢迎使用go语言") } 解决方法:使用utf8 无bom 编码 $(function () { $('pre.prettyprint code').each(function () { var lines = $(t...阅读全文

Golang学习笔记//建议的工程组织结构

 在golang中有无比强大的Go命令行工具(go build, go run等),消除了工程文件的概念,完全用目录结构和package来推导工程结构和构建顺序,因此golang中的工程组织结构是基于package和目录结构来组织的。这是从《The Way to Go》中摘录的几句,原汁原味: Packages are the primary means in Go of organizing and compiling code. Packages are a way to structure code: a program is constructed as a “package”.Every go-file belongs to one (and only one) package ...阅读全文

博文 2015-04-30 10:08 yanzhuliang

【Leetcode】:22. Generate Parentheses 问题 in Go语言

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: "((()))", "(()())", "(())()", "()(())", "()()()" 解题思路:这道题和N-Queen问题非常类似,几乎是一样的解题模式。 首先需要明白,怎么放置括号是合法的,假设n=5的情况,已经合法的放置了4个括号,那么怎么判断下一个放什么括号合法呢? 放左括号:如果之前放置的左括号数>=n,那么一定不合法 放右括号:如果之前放置的左括号数<=之前放置的右括号数,那么...阅读全文

博文 2016-05-02 22:33 u013564276

Go - 基础知识三

本篇主要总结了array,slice,map。 一:array就是数组,定义: var arr[n] type 其中n表示数组长度,type表示存储元素的类型,对数组的操作通过[]来进行读取或者赋值 二:Go里面的"动态数组"叫slice,slice并不是真正意义上的动态数组,而是一个引用类型。 slice总是指向一个底层array,slice的声明也可以像array,只是不需要长度。 注意声明数组时,方括号内写明了数组的长度或者是用...自动计算长度,而声明slice时,方括号内没有任何字符。 由于slice是引用类型,所以当引用改变其中元素的值时,其他的所有引用都会改变该值。如下图: slice拼接: 三:map也就是字典的概念,格式:map[keyType]valueTyp...阅读全文

go语言导入"C"出错问题

以下内容来自转载,出处:本文出自 “松松” 博客,请务必保留此出处http://dongsong.blog.51cto.com/916653/1587363 最近在看人民邮电出版社 许式伟 吕桂华编著的《Go语言编程》,看到【1.2.9 语言交互性】小节的cprint.go。未按照书中源代码格式编写,而是把 import "C" 和 import "unsafe" 合并放入小括号中并和注释结束符 */ 间隔了一行,这也是大多数Go语言学习和开发者经常使用的代码风格,我修改后的代码如下: package main /* #include #include */ import ( "C" "unsafe" ) func main() { cstr := ...阅读全文

博文 2016-04-16 14:38 kuoshuang

go语言第四天

5.0 控制结构 这章挺简单,程序也离不开控制和循环语句,按照每个语言的要求来就行了,没有什么特别的 ,让我们看看go的分支和循环是什么样的 关键字 if 和 else 之后的左大括号 { 必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号 } 必须和 else-if 关键字在同一行。这两条规则都是被编译器强制规定的 if condition { // do something } if condition { // do something } else { // do something } if condition { // do something } else { // do something } if initialization;conditio...阅读全文

[Go小技巧] 如何用函数实现接口以及如何检验接口实现?

type ( Handler interface { Do(int) error } HandlerFunc func(int) error ) func (hf HandlerFunc) Do(i int) error { return hf(i) } // 检查是否已实现Handler接口 var _ Handler = HandlerFunc(nil) 说明: Golang中下划线“_”表示忽略接收到的值; const、var、type关键字均支持分组形式,以圆括号“()”包裹,建议将相关声明写在同一分组,如上面代码中Handler和HandlerFunc的声明...阅读全文

博文 2016/09/02 09:41 henrylee2cn

GO入门

package main // 定义当前包名称 import "fmt" import "math" // 上述可以合并为 import ("fmt" "math") func main() { fmt.Println("hello ", math.Pi, "world"); //首字母大些的才会从包中导出,其他的符号都是不可见的。 } func add( a int , b int ) int { // 参数类型放到参数名称的后面, 返回值类型放到最后, 相同的参数类型甚至可以在最后一相同的类型声明时指定。 return a + b; } 函数可以返回任意数量的返回值 func swap( a , b string) (string, string) { // 返回值要放到括号中 retu...阅读全文

Go语言函数

http://www.jb51.net/article/56831.htm Go语言中的函数有系统函数和自定义函数。 1、系统函数 系统函数就是Go语言自带的函数,系统函数一般根据功能封装在不同的包内,比如Print、Printf、Println都在fmt包内,Abs、Sin都在math包内,Listen、Dial都在net包内等等。如果要使用系统函数,就要引入相关的包。看下面代码: package main import "fmt" import "math" func main() { a := math.Abs(-1) fmt.Println(a) } 其实程序的最初入口main函数其实也是定义在一个包内,就叫main包。 注意:如果没有使用包内的资源而导入这个包,这在Go语言是不允许...阅读全文

博文 2016-09-21 10:38 linuxheik

C++程序员学习go基础语法

概念差异: 1.Go没有继承和虚函数,但是提供接口interface。 2.Go有指针,但是没有指针算术。 3.Go提供垃圾回收。不需要delete 4.Go的字符串类似C++的const char*。无法被修改。 5.Go少数类型是引用传递。 6.Go的对外可见是以大小写定义头字母的来识别的。C++中是Public,private。 7.Go禁止隐式类型转换。 8.Go不支持函数重载和运算符重定义。 9.Go使用nil表示无效指针。 10.左大括号{必须在当前行。 0.命名规范以及缩进 1.行末没必要有分号 ; 。 2.对外变量或函数首字母大写。 3.命名规范我本人参考的http://studygolang.com/articles/2059 1.变量 1.基础类型 var a int8 ...阅读全文

博文 2016-11-04 14:07 mqdChalali

go语言学习

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/ /*********************************...阅读全文

博文 2016-10-05 11:00 曾劲松

Go 匿名函数的理解

通常不希望再次使用(即只使用一次的)的函数可以定义为匿名函数 详细链接 : https://www.kancloud.cn/xiaohuamao/riji/335713 package main import "fmt" func main() { //匿名函数 1 //f1 为函数地址 f1 := func(x, y int) (z int) { z = x + y return } fmt.Println(f1) fmt.Println(f1(5, 6)) //匿名函数 2 //直接创建匿名函数并运行 f2 := func(x, y int) (z int) { z = x + y return }(7, 8) fmt.Println(f2) //匿名函数 2 (无参数的形式) func...阅读全文

博文 2017-06-16 16:03:18 winnie121