go
历史五千年
母校-太原工业学院
展开
-
go函数类型讲解
package mainimport "fmt"type functiontype func(int) bool //声明一个函数类型func isodd (integer int) bool {//判断一个整数是否是奇数if integer % 2 != 0 {return true}return false}func i原创 2017-03-01 12:58:43 · 1039 阅读 · 1 评论 -
GO 内存分配new和make的区别
1、Allocation with newGo has two allocation primitives, the built-in functions new and make. They do different things and apply to different types, which can be confusing, but the rules are simpl原创 2017-03-26 11:44:37 · 1601 阅读 · 0 评论 -
GO panic和recover的用法
golang中没有try ... catch...这类异常捕获语句,但是提供了panic和recover内建函数,用于抛出异常以及异常的捕获。1、PanicThe usual way to report an error to a caller is to return an error as an extra return value. The canonical Read me原创 2017-03-25 11:02:04 · 11155 阅读 · 2 评论 -
GO结构体类型
A struct is a sequence of named elements, called fields, each of which has a name and a type. Field names may be specified explicitly (IdentifierList) or implicitly (AnonymousField). Within a stru原创 2017-03-17 14:32:30 · 469 阅读 · 0 评论 -
GO channel类型
channel是go语言在语言级别提供的goroutine间的通信方式。我们可以使用channel在两个或多个goroutine之间传递消息。channel是进程内的通信方式,因此通过channel传递对象的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。如果需要跨进程通信,我们建议用分布式系统的方法来解决,比如使用socket或者http等通信协议。channel是与类型相关的原创 2017-03-23 17:41:35 · 1465 阅读 · 1 评论 -
Go语言的反射三定律
这里先抛出GO语言的反射三定律,然后一一进行讲解:1、反射可以将“接口类型变量”转换为“反射类型对象”2、反射可以将“反射类型对象”转换为“接口类型变量”3、如果要修改反射类型对象,其值必须是“可修改的”谈到Go的反射,涉及到如下几个概念。(1)数据类型。go语言中的数据类型有:Bool Int Int8原创 2017-04-17 17:49:42 · 3077 阅读 · 0 评论 -
golang中tcp socket粘包问题和处理
在用golang开发人工客服系统的时候碰到了粘包问题,那么什么是粘包呢?例如我们和客户端约定数据交互格式是一个json格式的字符串:{"Id":1,"Name":"golang","Message":"message"}当客户端发送数据给服务端的时候,如果服务端没有及时接收,客户端又发送了一条数据上来,这时候服务端才进行接收的话就会收到两个连续的字符串,形如:{"Id"转载 2017-04-05 17:43:22 · 2225 阅读 · 0 评论 -
GOLANG项目:文本排序程序
项目需求:1、可以对文本文件进行排序,将排序结果另存为另一个文件2、这里的文本文件中的每一行存放一个整形数3、支持冒泡排序和插入排序项目环境:1、go version go1.7.5 windows/amd642、开发环境:LiteIDE1、项目目录结构E:\project\go\sorter>tree /f卷 文档 的文件夹 PATH 列表原创 2017-05-24 17:38:27 · 455 阅读 · 0 评论 -
GOLANG项目:基于命令行的计算器
go version:E:\project\go\calcproj\bin>go versiongo version go1.7.5 windows/amd64开发环境:LiteIDE项目需求:a、可以进行求和运算b、可以进行平方根运算c、软件基于命令行实现1.项目目录结构E:\project\go\calcproj├─bin├─pkg└原创 2017-05-16 15:12:18 · 1542 阅读 · 0 评论 -
GO接口详解
1、GOLANG中的接口定义语法:type InterfaceName interface { //方法列表}2、GOLANG接口实现golang中的接口实现不向其他语言(c++/java)需要强制声明实现该接口,而是只要类中的方法包含了接口中的方法,那么该类就实现了那个接口。java接口实现语法演示:interface Speaker {void原创 2017-05-27 11:38:34 · 5920 阅读 · 7 评论 -
GOLANG项目:基于命令行的音乐播放器
项目需求:1、设计一款音乐播放器,可以查看、添加、删除音乐2、基于命令行方式项目环境:1、Go version go1.7.5 windows/amd642、开发环境:LiteIDE1、项目目录结构E:\project\go\musicplayer>tree /f卷 文档 的文件夹 PATH 列表卷序列号为 000B-2502E:原创 2017-05-31 11:15:30 · 4498 阅读 · 0 评论 -
GOLANG sync.WaitGroup讲解
Package synctype WaitGroupA WaitGroup waits for a collection of goroutines to finish. The main goroutine calls Add to set the number of goroutines to wait for. Then each of the goroutines原创 2017-05-31 15:34:11 · 3284 阅读 · 0 评论 -
GOLANG sync.Once
对于从全局的角度只需要运行一次的代码,比如全局初化操始作,go语言提供了一个Once类型来保证全局的唯一性操作。type OnceOnce is an object that will perform exactly one action.type Once struct { // contains filtered or unexported fields}原创 2017-06-05 14:17:49 · 6086 阅读 · 0 评论 -
GOLANG简易http客户端实现
下面的程序通过建立TCP连接来实现初步的HTTP协议,通过向网络主机发送HTTP HEAD请求,来读取网络主机返回的信息。e.g.package mainimport ( "bytes" "fmt" "io" "net" "os")func main() { if len(os.Args) != 2 {原创 2017-06-06 16:34:04 · 1108 阅读 · 0 评论 -
GOLANG随机数生成方法
golang生成随机数可以使用math/rand包。Package randimport "math/rand"Package rand implements pseudo-random number generators.Random numbers are generated by a Source. Top-level functions, s原创 2017-06-07 17:02:30 · 26133 阅读 · 0 评论 -
GOLANG sync.Mutex和sync.RWMutex
Package synctype MutexA Mutex is a mutual exclusion lock. Mutexes can be created as part of other structures; the zero value for a Mutex is an unlocked mutex.A Mutex must not be copied原创 2017-06-02 17:29:48 · 1826 阅读 · 0 评论 -
GO Method set方法集
下面这段文字摘自go官方文档的Language Specification。Method setsA type may have a method set associated with it. The method set of an interface type is its interface. The method set of any other type T consi原创 2017-03-14 17:47:52 · 1195 阅读 · 0 评论 -
GO类型查询
A type switch compares types rather than values. It is otherwise similar to an expression switch. It is marked by a special switch expression that has the form of a type assertion using the reserved原创 2017-03-13 14:25:34 · 511 阅读 · 0 评论 -
Go搭建第一个web服务器
这里,先上代码,进行演示,然后一一进行论述。package mainimport ("fmt""log""net/http""strings")func main() {http.HandleFunc("/", sayhello)err := http.ListenAndServe(":9090", nil)if err !=原创 2017-03-01 16:07:49 · 654 阅读 · 0 评论 -
GO处理表单的输入
package mainimport ( "fmt" "html/template" "log" "net/http" "strings")func main() { http.HandleFunc("/", sayhello) //设置访问的路由 http.HandleFunc("/login", login) //设置访问的路由 err :=原创 2017-03-02 10:56:04 · 1410 阅读 · 0 评论 -
使用GO连接MYSQL数据库
GO没有内置的数据库驱动,但是GO定义了数据库驱动包接口database/sql/driver,用户可以基于驱动接口开发相应的数据库驱动。这样做的好处是,以后迁移数据库时,只需要导入对应的数据库驱动包即可,无需修改代码。这里先说一下以下两个Go包。database/sql :Package sql provides a generic interface around SQL (o原创 2017-03-02 15:15:15 · 2740 阅读 · 2 评论 -
GO目录操作
文件操作的大多数函数都是在os包里。目录操作1、创建目录func Mkdir(name string, perm FileMode) errorMkdir creates a new directory with the specified name and permission bits. If there is an error, it will be of type *P原创 2017-03-03 11:31:27 · 472 阅读 · 0 评论 -
GO文件操作
文件操作之前,需要先引入os包(import "os"),然后使用os.FunctionName进行相关文件的操作。文件操作1、创建文件func Create(name string) (*File, error)Create creates the named file with mode 0666 (before umask), truncating it if it al原创 2017-03-03 13:13:02 · 394 阅读 · 0 评论 -
Go项目目录管理
官方地址:http://docs.studygolang.com/doc/code.html在Go的官网文档How to Write Go Code中,已经介绍了Go的项目目录一般包含以下几个:src 包含项目的源代码文件; pkg 包含编译后生成的包/库文件; bin 包含编译后生成的可执行文件。 可以通过下面的例子来说明工程目录的组织管理。(Windows 7 64原创 2017-02-25 10:43:45 · 672 阅读 · 0 评论 -
Go函数定义
Go函数定义格式如下:func function_name( [parameter list] ) [return_types] { 函数体}函数定义解析:func:关键字,用于声明函数。function_name:函数名称,函数名和参数列表一起构成了函数签名(signature)。parameter list:参数列表,参数就像一个占位符,当函数被原创 2017-02-26 10:08:58 · 1254 阅读 · 0 评论 -
Go方法定义
A method is a function with a receiver. A method declaration binds an identifier, the method name, to a method, and associates the method with the receiver's base type.语法格式如下:func (Receive原创 2017-02-26 16:15:02 · 1106 阅读 · 0 评论 -
GO Short variable declarations短变量声明
A short variable declaration uses the syntax:IdentifierList := ExpressionListIt is shorthand for a regular variable declaration with initializer expressions but no types:var IdentifierLi原创 2017-03-06 13:41:00 · 687 阅读 · 0 评论 -
GO err is shadowed during return
这里先复现问题,然后进行问题说明。//test.gopackage mainimport "fmt"import "strconv"func foo(x string) (ret int, err error) { if true { ret, err := strconv.Atoi(x) if err != nil { return原创 2017-03-06 14:26:08 · 21329 阅读 · 1 评论 -
GO类型嵌套
在GO结构体类型中嵌套一个其他的类型可以到达继承的目的。语法:struct {T | *T}A field or method f of an anonymous field in a struct x is called promoted if x.f is a legal selector that denotes that field or method f.原创 2017-03-17 17:39:57 · 2605 阅读 · 0 评论 -
GO 不定参数的使用
1、固定类型的不定参数语法格式:argumentName ...Typee.g.package mainimport "fmt"func f1(args ...int) { for _, v := range args { fmt.Println(v) }}func main() { f1()原创 2017-03-27 15:11:41 · 2448 阅读 · 0 评论 -
理解Golang包导入
参考文章:http://www.cnblogs.com/sevenyuan/p/4548748.htmlGolang使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进”了许多。Golang中包的定义和使用看起来十分原创 2017-03-11 20:29:54 · 2623 阅读 · 0 评论 -
简易聊天室的开发---GO语言
需求服务器接收客户端的信息接收完以后将客户端的信息发送到所有的客户端上客户端使用/quit退出聊天项目结构E:\project\go\mychat>tree /f卷 文档 的文件夹 PATH 列表卷序列号为 000B-2502E:.├─bin│ client.exe│ server.exe│├─pkg└─src原创 2017-04-07 11:24:18 · 584 阅读 · 0 评论 -
GO类型断言
我们知道接口可以指向任意类型对象,只要该类型实现了接口中的所有方法。那如何判定接口到底指向的是哪种类型的对象呢?我们可以使用类型断言来实现。语法:x.(T)其中,x为接口变量,T为任意的类型。上面的断言语句表示 x is not nil and that the value stored in x is of type TMore precisely, if T原创 2017-03-13 13:15:01 · 485 阅读 · 0 评论 -
GO select用法详解
golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行(立即执行:意思是当前Goroutine不会因此操作而被阻塞)select的用法与switch非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。与switch语句可以原创 2017-03-23 15:40:55 · 28941 阅读 · 1 评论