
Golang
分享平时用到的golang技术
Json____
万物OOP | www.wwwoop.com
展开
-
用golang简单做一个内网穿透小工具!
原理:nginx 作为 web服务,通过nginx 反向代理 把请求 转发给 golang写的 一个端口,golang 是一个服务端 和一个内网 端,golang 的软件 启动后 服务端 和内网 会建立一个隧道,把 nginx转发的数据 发送给内网服务器 从而做到内网穿透。一个个人需求,需要简单的穿透一下 家里的电脑,也不需要多稳定,也没有并发。所以 就采用 用golang这个语言来实现,他的跨平台编译 还是很方便的。需要编译哪个系统的可执行文件 就执行上面哪个命令 执行后 开始编译。原创 2024-12-02 22:21:20 · 494 阅读 · 0 评论 -
go 进程 线程 协程 并发
package mainimport ( "fmt" //"runtime" "sync" "time")//go并发// 进程 线程// 进程是程序在操作系统中的一次执行过程 系统进行资源分配 和调度的一个独立单位// 线程是进程的一个执行实体 是CPU调度和分派的基本单位 他是比进程更小的能独立运行的基本单位// 一个进程可以创建和撤销多个线程 同一...原创 2020-02-14 15:19:28 · 390 阅读 · 0 评论 -
Go语言 包 package
package include//包的概念//go 语言是使用包来组织源代码的 包是多个go源码的集合 是一种高级的代码复用方案// 任何源代码文件必须属于某个包//同时源码文件的第一行有效代码必须是package pacakgeName 语句,通过该语句声明自己所在的包//go语言的包借助了目录树的组织形式 一般包的名称就是目录的名称// 包可以定义在很深的目录中 包名的定义...原创 2020-02-12 16:58:09 · 387 阅读 · 0 评论 -
go语言 接口 interface{}
package mainimport ( "fmt" "io")//接口声明格式/** type 接口类型 interface{ 方法名1(参数)(返回值) 方法名2(参数)(返回值) }接口类型名 使用type将接口定义为自定义的类型名 接口在命名时 一般会在单词后面加 er如有操作的接口就是 Writer 如有字...原创 2020-01-03 13:53:45 · 465 阅读 · 0 评论 -
go语言 结构体和Json
package mainimport ( "encoding/json" "fmt" "net/http")//将int定义为 myInt型type myInt int// 为MyInt添加IsZero()方法func (m myInt) IsInt() bool { return m == 0}// 为MyInt添加Add()方法func (m...原创 2020-01-02 17:21:19 · 558 阅读 · 0 评论 -
GO语言 函数、方法、结构体 、接收器
package mainimport "fmt"//定义结构体type test1 struct { str string number int}//类型一样的 成员可以同时定义type test2 struct { A, B, C, D int}//定义结构体 属性指针type test3 struct { Name string...原创 2019-12-31 17:48:23 · 524 阅读 · 0 评论 -
go 函数的定义
package mainimport ( "fmt" "math")//普通函数的声明//func 函数名(形式参数列表) 返回值列表 {// 函数体//}//如果函数返回一个无名变量或者没有返回值,返回值列表的括号是可以省略的func hypot(x, y float64) float64 { return math.Sqrt(x*x + y*y)}...原创 2019-12-17 17:10:38 · 407 阅读 · 0 评论 -
GO map类型
package mainimport ( "fmt" "sort" "sync")func main() { //map 是引用类型,可以使用如下方式声明: //var mapname map[keytype]valuetype //Go语言中 map 是一种特殊的数据结构,一种元素对(pair)的无序集合, // pair 对应一个 key(...原创 2019-12-12 17:08:48 · 289 阅读 · 0 评论 -
golang 数组与切片分析
package mainimport "fmt"func main() { var q = [3]int{1, 2, 3} fmt.Println(q[2]) //在数组的定义中,如果在数组长度的位置出现“...”省略号,则表示数组的长度是根据初始化值的个数来计算, var a = [...]int{2, 2, 2} fmt.Println(a) //...原创 2019-12-11 15:54:55 · 272 阅读 · 0 评论 -
golang 变量逃逸分析
package mainimport "fmt"//本函数测试入口参数和返回值情况func dummy(b int) int { var c int c = b return c}//空函数什么都不做func void() {}// 声明空结构体测试结构体逃逸情况type Data struct {}func dummy1() *Data {...原创 2019-12-04 17:07:54 · 492 阅读 · 0 评论 -
GOlang 指针
package mainimport ( "flag" "fmt")func main() { //指针 var cat int = 1 var str string = "ba" fmt.Printf("%p %p\n", &cat, &str) // 变量 指针和地址三者关系 每个变量都拥有地址 指针的值就算地址 /...原创 2019-12-04 16:42:00 · 690 阅读 · 0 评论 -
go 并发
package mainimport ( "fmt" "os" "time")func run(num int) { for num := 1; num > 0; num++ { fmt.Println(num) }}func ready(w string, sec int64) { secs := time.Duration...原创 2019-11-12 16:52:26 · 309 阅读 · 0 评论 -
go 连接sqlserver 调用存储过程
func (u *UserController) Get() { db, _ := GetDB() defer db.Close() var m1="json" sql := fmt.Sprintf("SELECT dbo.fn_ChineseToSpell('%s') name;", m1) row,err := db.Query(sql) if...原创 2019-08-31 11:18:42 · 2017 阅读 · 1 评论 -
GO语言 对map类型的理解
package mainimport "fmt"type PersonInfo struct { ID string Name string Address string}func main(){ //map这个类型 //map是一堆键值对的未排序的集合 // var personDB map[string] PersonIofo pers...原创 2019-08-15 19:17:51 · 274 阅读 · 0 评论 -
go 结构体 封装
GO交流群:874512552package mainimport "fmt"//面向对象// go 语言 仅支持封装 不支持继承和多态// go 语言 没有class 只有structtype treeNode struct { value int left,right *treeNode}//go 没有构造函数 但是可以加工厂函数 来控制// 返回局...原创 2018-12-19 17:33:55 · 578 阅读 · 0 评论 -
GO基础学习1
package mainimport ( "fmt" "io/ioutil" "math" "math/cmplx" "strconv")//go 语言很特别//没有对象 没有继承多态 没有泛型 没有try/catch////有接口 函数式编程 csp并发模型(goroutine + channel)// 函数外面定义变量 必须 用 var 关...原创 2018-12-09 16:01:04 · 203 阅读 · 0 评论 -
go语言 对redis的使用
GO交流群:874512552相关模块以及安装方式redigo模块redis-cluster客户端实现go-redis模块注意:如下操作使用redigo模块进行redis的操作安装使用$ go get -v github.com/gomodule/redigo$ cat redis-conn.go/** * @File Name: redis-conn.go * @A...转载 2019-01-17 17:10:19 · 910 阅读 · 0 评论 -
go语言报错reflect: reflect.Value.SetInt using value obtained using unexported field 解决方法
GO交流群:874512552在学习go编程,反射修改结构体属性的值时,示例package mainimport( "fmt" "reflect")type People struct{ age int name string}func main(){ temp := People{age:20,name:"mark"} fmt.Prin...转载 2019-01-31 15:05:41 · 5263 阅读 · 0 评论 -
go语言整数转字符串的方法
GO交流群:874512552strconv.Itoa 不能直接使用string直接转,这样转出来的数据会乱码 可使用 strconv.Itoa 来进行整数转字符串strconv.Itoa(num)详细讲解可以参考 https://www.jb51.net/article/142447.htm?tdsourcetag=s_pcqq_aiomsg 这篇博客 ...原创 2019-02-18 17:28:35 · 1268 阅读 · 0 评论 -
go语言获取明天凌晨的时间戳
GO交流群:874512552。 year:=time.Now().Format("2006") //年 month := time.Now().Format("01") //月 day:=time.Now().Day()+1 //日 tm2, _ := time.Parse("01/02/2006", month+"/"+strconv.Ito......原创 2019-02-19 16:03:25 · 3637 阅读 · 0 评论 -
Go语言开发中API 返回Xml数据实例
GO交流群:874512552。//返回xmltype xmlIp struct { XmlList []xmlList}type xmlList struct { Ip string `xml:"ip"` Port string `xml:"port"` Country string `xml:"country"` City string `xml:"...原创 2019-02-19 17:48:56 · 901 阅读 · 0 评论 -
go基础学习第一天
package mainimport "fmt"func main(){ fmt.Println("hello json") var a string = "Json" fmt.Println(a) var b,t int = 1,2 fmt.Println(b,t) result,_:= Compute(2 ,2.1) fmt.Println(...原创 2019-08-08 18:34:32 · 236 阅读 · 0 评论 -
go语言 对数组 切片的理解
package mainimport "fmt"func modify(array [5]int){ array[0]=10 fmt.Println("----------",array)}func main(){ array:=[5]int{1,2,3,4,5} modify(array) //:数组的长度在定义之后无法再次修改;数组是值类型...原创 2019-08-13 19:10:18 · 236 阅读 · 0 评论 -
GO语言 对函数的理解
package mainimport ( "fmt" "errors")func main(){ Test() //调用不定参数函数 myFunc(1,2,3,4,5) myFunc(1,2) myFunc(1,23,4,56,342,24) //调用不定参数 任意类型 // 如果你想传入任意类型 可以指定类型为 interface...原创 2019-08-20 16:25:45 · 218 阅读 · 0 评论 -
go语言中的数组与切片
GO交流群:874512552package mainimport "fmt"//数组是值类型// [10]int 和 [20]int 是不同的类型// 调用func f(arr [10]int) 会拷贝数组// go 语言中只有一种传递方式 就是值传递// 但是这样做有时候很不方便 可以做指针传递 arr *[10]int// 指针 里面的值发生变化 外面的值也会跟着变...原创 2018-12-13 20:26:12 · 482 阅读 · 0 评论