![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go 编程基础
文章平均质量分 65
fangyangde4
看你哦呢 将建军节建军节
展开
-
Json处理
基础使用json.Marshal()函数可以对一组数据进行JSON格式的编码func Marshal(v interface{}) ([]byte, error)可以使用json.Unmarshal()函数将JSON格式的文本解码为Go里边预期的数据结构。json.Unmarshal()函数的原型如下:func Unmarshal(data []byte, v interface{}) error...原创 2018-05-04 15:26:55 · 179 阅读 · 0 评论 -
GO 并发编程
1.goroutinegoroutine是Go语言中的轻量级线程实现,由Go运行时(runtime)管理。在一个函数调用前加上go关键字,这次调用就会在一个新的goroutine中并发执行。当被调用的函数返回时,这个goroutine也自动结束了。需要注意的是,如果这个函数有返回值,那么这个返回值会被丢弃。并发执行实例package mainimport "fmt"func Add(x, y ...原创 2018-06-14 16:26:19 · 223 阅读 · 0 评论 -
用切片实现queue
queue是先进先出的数据结构,利用切片的强大功能,可以很轻松地实现先进先出的功能add(data element)直接在切片后面append()remove(data element)查找元素在切片的位置然后将前部分和后面append起来poll()直接做切片的切片peek()返回切片的第一个数代码:package queuetype element interface { equals(...原创 2018-06-13 10:03:36 · 221 阅读 · 0 评论 -
channel的用法
channel的声明创建有缓冲的管道c := make(chan string,100)创建无缓冲的管道c := make(chan string)往chan里写数据for _,v := range words { c <- v // 写入chan}close(c)从chan里读数据 for { t, ok := <-in if ok { t = st...原创 2018-06-13 09:56:29 · 24929 阅读 · 0 评论 -
安全计数器
知识点:根据key查找map中的valuevalue, ok := c.v[key]并发使用安全的结构体的声明// SafeCounter 的并发使用是安全的。type SafeCounter struct { v map[string]int mux sync.Mutex}package safecounterimport ( "sync")//...原创 2018-06-13 09:46:16 · 361 阅读 · 0 评论 -
最长公共子串
func changeValue(value1 []int){ for i:=0; i < len(value1); i++ { switch { case value1[i] == 101: value1[i] = 2 case value1[i] == 102: value1[i] = 15 case value1[i] == 103: value...原创 2018-06-13 09:41:54 · 114 阅读 · 0 评论 -
判断数字是否为回文
func isPalindrome(x int) bool { if x < 0 { return false } div := 1 for x /div >= 10 { div *=10 } for x != 0 { l := x / div r := x %10 if l != r { return false } x = (x %...原创 2018-06-12 11:35:42 · 857 阅读 · 0 评论 -
删除数组中的一个元素返回数组长度
func removeElement(nums []int, val int) int { var i int = 0 j := len(nums)-1 for i < j { if nums[i]==val { nums[i]=nums[j] j-- }else { i++ } } if i==j && nums[i] ==val{...原创 2018-06-12 11:34:41 · 679 阅读 · 0 评论 -
按字典序打印字符串的所有全排列
要用迭代,最后将结果保存时一定要用指针关键: string(str)s[i]>s[j] func permu(list *[]string,str []byte, i int ) { if str ==nil { return } if i ==len(str)-1 { *list = append(*list,string(str)) }else { for j :...原创 2018-06-12 11:27:05 · 1715 阅读 · 0 评论 -
接口
接口原理在 Golang 中,interface 是一种抽象类型,相对于抽象类型的是具体类型(concrete type):int,string。在 Golang 中,interface 是一组 method 的集合,是 duck-type programming 的一种体现。不关心属性(数据),只关心行为(方法)。具体使用中你可以自定义自己的 struct,并提供特定的 interface 里面...原创 2018-06-12 11:15:33 · 145 阅读 · 0 评论 -
go 语言将函数作为入参
go 语言可以直接将函数作为参数传入函数中定义需要传入的函数func minMaxComp(v1, v2 int)(r int) { if v1 == v2 { r = 1 return } if v1 > v2 { r = 2 return } r = 3 return}定义主函数func min2maxSort(array []int, ...原创 2018-06-12 09:24:41 · 1754 阅读 · 0 评论 -
go 语言中奇怪的语法
1. 断言 r.(x)r.(map[string]interface{}) r.(x)断言,然后可以用一元或二元值接收。一个参数接受的话,出错会panic。两个参数接受的话,第二个是bool,断言不成功会赋值为false。常用type switch判断interface的实体类型2.map的 声明与遍历var m1 map[string]stringm1 = make(ma...原创 2018-11-07 16:53:28 · 1012 阅读 · 0 评论