package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"log"
)
func main() {
目录
参数传递
var a int = 2
var pa *int = &a
*pa = 3
fmt.Println(a)
Go语言中 指针不能运算
参数传递
不像C++、Java、Python等语言一样参数传递有值传递和引用传递两种方
1.在windows系统下,需要首先定义两个环境变量GOPATH和GOROOT, GOPATH是第三方类库的代码目录 , GOROOT是go的安装目录
2.按照我的定义 , 进入这个目录D:golangcodesrcgithub.comemersio
package main
import (
"log"
"os"
)
func main() {
//创建目录
os.Mkdir("test", os.ModePerm)
一、go语言版hello world
package main # 指明文件属于main包 main包使用后来定义一个独立的可执行程序,而不是库main包中的main函数是特殊的,不管在什么程序中,main做什么事情,它总是程序开始的执行的地方。
import "fmt" # 导入fmt包,f
类型断言有点像向下转型,接口类型转到具体的实现实例类型上类型断言是一个使用在接口值上的操作。语法上它看起来像x.(T)被称为断言类型,这里x表示一个接口的类型和T表示一个类型
package main
import (
"fmt"
)
//定义一个接口
type Person inter
go的pool资源池:1.当有多个并发请求的时候,比如需要查询数据库2.先创建一个2个容量的数据库连接资源池3.当一个请求过来的时候,去资源池里请求连接资源,肯定是空的就创建一个连接,执行查询,结束后放入了资源池里4.当第二个请求过来的时候,也是去资源池请求连接资源,就直接在池中拿过来一个连接进行查
range循环会无限在channels上面迭代
package main
import (
"fmt"
"time"
)
func main() {
//创建一个通道
ch := make(chan int)
//开启一个goroutine
go func() {
//无限循
前段时间学习 go, 专门整理的关于 goroutine 的理解.
What's goroutine? It's an independently executing function launched by a go statement.It has its own call stack, whi
基于select的多路复用:1.解决如果一个channel中没有事件发过来,程序会立即阻塞,无法接收到第二个channel中的事件2.一般每一个case都代表一个通信操作,多个case会选一个能执行的3.default会默认执行,因此可以作为轮询channel来用
package main
im
接口类型1.接口类型具体描述了一系列方法的集合,实现这些方法的具体类型是这个接口类型的实例2.一个类型如果拥有一个接口需要的所有方法,那么这个类型就实现了这个接口
package main
import (
"fmt"
)
//定义一个接口类型Person
type Person inter
error接口1.error就是一个接口interface2.属于errors包,该包有一个导出方法New,返回了errorString类型3.errorString类型实现了error接口4.之所以这样是因为可以实现每个错误都是不同的实例
package main
import (
"err
多租户通用权限设计(基于 casbin)
所谓权限控制, 概念并不复杂, 就是确认某个操作是否能做, 本质上仅仅就是个bool判断.
权限几乎是每个系统必不可少的功能, 和具体业务结合之后, 在系统中往往表现的非常复杂和难于控制, 很大部分原因是把权限和具体业务结合的太过紧密, 把业务的复杂度也加入
Linux下安装Beego出错
问题:go install: cannot install cross-compiled binaries when GOBIN is set
遇到这个问题一般是在环境变量中设置了 GOBIN 可以打开 /etc/profile 把这个变量注释掉就,执行 source
如何用golang搭建一个web服务呢?菜鸟官网的go web编程教程已经介绍了web服务器的工作原理,这里就不赘述了。
我们先看个例子:http.go
package main
import (
"fmt"
"io"
"log"
"net/http"
)
fu
目录
条件语句
循环语句
条件语句
条件语句用 if 关键字来判定条件,如:
func bounded(v int) int {
if v > 100 {
return 10
package main
import (
"fmt"
)
//定义一个类型
type tsh struct {
//定义成员,类型是func() string
test func() string
}
//定义一个函数,获取tsh类型
func New(fn func() strin
目录
函数定义
函数示例
小结
函数定义
函数定义与变量定义相似,
func function_name(var1, var2, var3, ...) (return_type1, return_type1,
控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context
WaitGroup的使用
WaitGroup可以用来控制多个goroutine同时完成
func main() {
var wg sync.WaitGroup
wg.Add(2)
go f
Go语言是Google公司在2009年开源的一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,被很多Go语言传道者誉为“互联网时代的C语言”。而C++语言诞生于1979年,可以将C++语言视为一个语言联邦,主要包含C语言(面向过程)、面向对象、STL容器和算