go
jiang_mingyi
想专注于整个软件开发流程,现阶段有部分前端开发经验和少量的后端开发经验
展开
-
Go 二维切片初始化
用golang刷题是真的费劲,但是要练语法,还是没办法呀。 这里说一下初始化一个n*n的二维切片:f := make([][]int, n) for i := 0; i < len(matrix); i++ { f[i] = make([]int, n) }其实可以直接用f := [n][n]int建立一个二维数组,但是go的数组类型是带...原创 2018-08-10 18:00:47 · 23076 阅读 · 6 评论 -
Go实现while
golang 里面没有while关键字,可以用for+break实现i:=0for { do something if i <= 10 { break; }}与java里面等价的while:int i = 0;while(i<10){// notice there is only < do something...原创 2018-08-10 21:19:21 · 32521 阅读 · 1 评论 -
Go 用list实现stack和queue
go的container/list 包里面带的list,有在链表头部和尾巴插入元素,和获取头部和尾部元素的操作,因此我们可以用list来实现栈和队列的功能。import ( "container/list" "fmt")func StackTest() { stack := list.New() for i := 0; i < 5; i++ {...原创 2018-08-13 20:42:57 · 1899 阅读 · 0 评论 -
golang 平行赋值的原理(个人理解)
对于golang, 交换两个数很简单,如下这么写就可以了:i, j = j, i等号左边和右边含有多个表达式,这就是平行赋值。 赋值分为两个步骤:计算等号左边的操作数的索引表达式和取址表达式,计算等号右边的表达式。赋值我们来看下面一段代码会输出什么?func main() { i := 1 s := []string{"A", "B", "C"} ...原创 2018-08-18 17:45:39 · 2565 阅读 · 0 评论 -
平行赋值中遇到的变量作用域问题
var a inta, b := 1,2像这样的赋值是允许的,但是当出现如下情况时:var a intfor i:=0; i<3; i++ { a, err := f()}// 在这里得不到for代码块里面的a一不留神,坑就来了。for 代码块里面的a是for代码块的本地变量,而不是for代码库外面的全局变量var a intfor i:=0; i<...原创 2018-08-18 21:30:34 · 320 阅读 · 0 评论 -
go range使用的注意事项
首先来看下面一段代码是否有问题:package srcimport ( "testing")type A struct { ele1 int ele2 string}func TestRange(t *testing.T) { aSlice := make([]A, 5) for i:=0; i<5; i++ { ...原创 2018-09-08 15:58:50 · 1094 阅读 · 1 评论