golang结构体指针解析

golang指针可以这样理解:本身为一个整型常量,但由于其声明时为指针,因此拥有了特殊的能力,即在其前增加 * ,即可直接访问内存编号为该整型常量的数据。而对于某个定义的常量,在前面加 & ,也可以获得数据的内存编号。当我们定义结构体指针时,问题出现了: type name int8 type first struct { a int b bool name } func main(){ var type1 = first{1, false, 2} var type_pointer *first...阅读全文

Segmentfault 2020-02-08 15:32:32 回到未来丶

leetcode_33

Golang: 思路:这大概是我提交错误最多的一次。思路很简单,先二分找到变化的点,知道变化的点后,查找可以去到数组的不同区域去二分。时间复杂度是logn没有问题。思路很正确没有问题。至于为什么错这么多,状态不好,没啥耐心,强行写题,炸了。顺便一提,这道题我的代码极烂,烂到我都不想承认这是我写的!!!后面会不会改要看心情。 代码如下: func search(nums []int, target int) int { if len(nums)==0 { return -1 } if len(nu...阅读全文

简书 2020-02-04 01:32:40 淳属虚构

leetcode_34

Golang: 思路:还没从33题的阴影中恢复过来,就写了这题。正确思路是,二分求左边界,二分求右边界。我是二分找到点,然后分别向左右两边扩散。效率很低,很垃圾。状态不好不建议做题。 代码如下: func searchRange(nums []int, target int) []int { if len(nums)==0 { return []int{-1,-1} } res:=binarySearch2(nums,target,0,len(nums)-1) if res==-1{ retur...阅读全文

简书 2020-02-04 01:32:39 淳属虚构

golang-定时器

定时器 和 断续器 定时器:延时某些操作任务 断续器:设置的好间隔时间,周而复始的执行任务 package main import ( "fmt" "time" ) // 定时器 和 断续器 /** 定时器:延时某些操作任务 断续器:设置的好间隔时间,周而复始的执行任务 有两种方式创建定时器: time.NewTimer 函数 和 time.AfterFunc 函数 这两个函数将得到 time.Timer 类型 // timer.Reset(time.Second * 3) 重置定时器,并设置定...阅读全文

简书 2020-02-04 01:32:39 爱吃豆包

8.Go语言基础之指针

Go语言中的指针不能进行偏移和运算,是安全指针。 在了解GO语言中的指针前,首先需要知道三个概念:指针地址、指针类型和指针取值。 1.Go语言中的指针 任何数据载入内存后,在内存中都有对应的地址,这就是指针。 为了保存一个数据在内存中的地址,需要指针变量。 比如"好好学习,天天向上"这个字符串写入程序中,程序一启动这句话就加载到内存(假设内存地址为0x123456),在程序中,把该字符串赋值给变量A,把该字符串的内存地址赋值给变量B。 这时变量B就是一个指针变量。通过变量A和变量B都能找到该字符...阅读全文

51CTO博客 2020-02-04 00:15:55 DevOperater

算法:时间复杂度+二分查找法(Java/Go/Python)实现

导读 曾几何时学好数据结构与算法是我们从事计算机相关工作的基本前提,然而现在很多程序员从事的工作都是在用高级程序设计语言(如Java)开发业务代码,久而久之,对于数据结构和算法就变得有些陌生了,由于长年累月的码砖的缘故,导致我们都快没有这方面的意识了,虽然这种论断对于一些平时特别注重学习和思考的人来说不太适用,但的确是有这样的一个现象。 而在要出去面试找工作的时候,才发现这些基础都快忘光光了,所以可能就“杯具”了!实际上,对于数据结构和算法相关的知识点的学习,是程序员必须修炼的一门内功,而要掌握...阅读全文

51CTO博客 2020-02-03 18:56:04 wx5d9ed7c8443c3

golang初学者: string, [...]TYPE, []TYPE类型浅析 & golang 的内存管理

# go string类型 ## string类型变量 ```c //go语言中的string类型像是c语言中的 struct string{ size_t len ; char const * data ; //指向[...]byte类型的数组 }; ``` ## string = 运算符赋值操作 ```go /* string类型 = 赋值运算符, 推测使用浅copy, string类型不提供修改索引的[...]byte类型数组的方法,并且go...阅读全文

Go语言中文网 2020-02-03 22:24:00 loop_0

Go语言基础(四)—— 优质的容错处理

前言: 本专题用于记录自己(647)在Go语言方向的学习和积累。 系列内容比较偏基础,推荐给想要入门Go语言开发者们阅读。 目录如下: Go语言基础(一)—— 简介、环境配置、HelloWorld Go语言基础(二)—— 基本常用语法 Go语言基础(三)—— 面向对象编程 Go语言基础(四)—— 优质的容错处理 Go语言基础(五)—— 并发编程 Go语言基础(六)—— 测试、反射、Unsafe Go语言基础(七)—— 架构 & 常见任务 Go语言基础(八)—— 性能调优 引子: Go语言本身没有...阅读全文

掘金 2020年02月03日 奇舞647

golang逃逸(escape)的问题

在C语言中,使用malloc函数分配生成的变量都在堆上面,其他的普通变量都在栈上面。使用C++语言,使用new生成的对象都在堆上面,其他的普通变量都在栈上面。 golang情况不是这样的,golang的编译器会自动分析代码,如果一个在函数内分配的变量会返回到函数外面,那么这个变量会在堆上分配,而不是在栈上面。 这样就不会出现空指针的问题。但是堆存在垃圾回收的问题,垃圾回收需要占用比较多的性能。所以尽量避免使用堆上的空间,尽量使用栈上的空间。故而在函数中,参数优先使用普通变量,而不是指针变量。 g...阅读全文

简书 2020-02-03 19:32:43 王艳秋1

golang的一些点

select case的用法 context库的用法 随机数发生器的用法 rand.NewSource() rand.Seed(time.Now().Nanosecond()) rand.IntN(100) sync.Once的用法 Happens-before原则、Observe原则 CAS 双重检测 atomic库的用法 golang调试工具delve的一些知识 Installation on macOS Ensure you have a proper compilation toolch...阅读全文

简书 2020-02-03 19:32:43 王艳秋1

leetcode_22

Golang: 思路:还是递归吧,题目做少了还是很难想出思路的,但不想就直接看别人的,那你肯定进步不大。这题关键点在于想通这是个深度优先加回溯加剪枝,就没了。剪枝,当右括号的数目大于左括号,那就剪枝,当左括号大于n,剪枝。 代码如下: func generateParenthesis(n int) []string { var res []string getResults(2*n,&res,"",0,n) return res } func getResults(n int,res *[]st...阅读全文

简书 2020-02-03 19:32:42 淳属虚构

leetcode_24

Golang: 思路:不要总是递归,没啥意思,循环也可以解决的嘛。这个自己画画过程图也就结了,不是很难。 代码如下: func swapPairs(head *ListNode) *ListNode { if head==nil { return nil } if head.Next==nil{ return head } res:=head.Next temp1:=head temp2:=head.Next var temp3 *ListNode for temp2!=nil { temp1....阅读全文

简书 2020-02-03 19:32:42 淳属虚构

编译

Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOO...阅读全文

简书 2020-02-03 19:32:41 风亡小窝

golang csv处理

golang csv处理库推荐使用github.com/gocarina/gocsv,这个库可以根据自动根据结构体标记进行编码 导出 假设数据结构如下: type Student struct { Uid int `csv:"uid"` Name string `csv:"name"` } 导出样例: list := []Student{xxx} //数据可以查询出来 content, err := gocsv.MarshalString(&list) if checkError(err) { ...阅读全文

简书 2020-02-03 19:32:41 hewolf

leetcode_31

Golang: 思路:这题难度在于理解题意,什么叫下一个排列,简单来说,给定一个数组[1,2,3,4,5],我们可以把它看成一个整数12345,那么它的下一个排列也就是12354,即大于12345的最小的排列。解题过程就是,从后往前,找到非递增的第一个数,再从后往前,将它从它以后的大于它的第一个数交换,然后反转它后面的剩下的数组部分。举个比较有代表性的例子,[3,6,5,4,3],从后往前找到非递增的第一个数3,位置是arr[0],再从后往前,将它从它以后的大于它的第一个数(也就是4)交换,交换...阅读全文

简书 2020-02-03 19:32:40 淳属虚构

debian安装x2go

1-debian安装xfce桌面sudo apt-get install xfce42-添加GPG Keysgpg: 从公钥服务器接收失败:No namesudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 --recv E1F958385BFE2B6E参考:https://www.jianshu.com/p/7f04a44486343-添加实际的Repositorysudo vim /etc/apt/sou...阅读全文

51CTO博客 2020-02-03 12:21:20 dlhlSC