Go语言
徒步远方999
不要让任何一件事让你丢失持续学习的能力!
展开
-
go语言 环境安装与配置---windows下
在从事java开发后,想学习一门新语言,本来以前工作中接触过python,也用过一段时间,想学Python,后来发现Go语言和我以前自学的C/C++有很多数据类型,打印格式和性能等很多都是相似,或者相同,就开始学Go这门新语言,好的开始,值得去坚持,我会坚持更新自己学习的心得及其代码,供其他初学者进行参考一.Go语语言学习资料 go语言官网: https://golang....原创 2018-06-30 12:20:04 · 624 阅读 · 0 评论 -
go语言 函数
在go语言中,函数可以进行自定义,也可以直接进行调用系统已经存在的函数,那么对于函数而言,最重要的两点就是参数列表和返回值,下面就几种类型进行解析一.无参数无返回值的函数 // 无参无返回值函数的定义 func myFunc01() { a := 222 fmt.Println("a=", a) }二.普通参...原创 2018-07-21 11:10:00 · 196 阅读 · 0 评论 -
go语言 递归函数
一.go语言中的递归函数,和java中的递归函数,道理相类似,现就递归函数由简单到复杂来看二.示例一func test(a int) { if a == 1 { // 函数中止调用的条件,非常重要 fmt.Println("a=", a) return // 中止函数的调用 } // 函数调用自身 test(a - 1) fmt.Println("a=", a)}...原创 2018-07-21 21:38:23 · 448 阅读 · 0 评论 -
go语言 回调函数
一.概述 此处所说的回调函数和java中有些相似,利用回调函数,能够实现多态,反复调用,提高代码的可用性二.函数的类型func minus(a, b int) int { return a - b}//函数也是一种数据类型,通过type给一个函数类型起名//FuncType它是一个函数类型 函数类型名为FuncTypetype FuncType func(int, ...原创 2018-08-20 23:21:24 · 1351 阅读 · 0 评论 -
go 语言 匿名函数和闭包
一.匿名函数 go语言中,匿名函数和java中内部类有相似之处,java的内部类是只调用一次。 1.匿名函数的声明 func(参数列表) 返回值列表 { 函数体... } 2.匿名函数的调用:一种是赋值给变量,进行调用;另外一种是 匿名变量后面加(ar...原创 2018-08-23 21:11:34 · 272 阅读 · 0 评论 -
go语言 defer使用方法
一.defer关键字 延迟调用 defer关键字的作用主要在于延迟调用,在main方法即将结束的那一刹那,调用defer后面变量,多个defer关键字,会 进行先进后出的规则 二.多个defer执行的顺序 如果一个函数中有多个defer语句,他们会以先进后出的顺序进行执行,哪个某个函数或者延迟发生了错误,这些调用依旧会被执行下去...原创 2018-08-23 22:06:22 · 164 阅读 · 0 评论 -
go语言 获取命令行参数
一.获取用户在命令行输入的参数代码示例package mainimport "fmt"import "os"func main() { // 接收用户传递的参数,都是以字符串方式进行传递的 list := os.Args n := len(list) fmt.Printf("n=%v\n", n) // xx.exe a b c for i := 0; i <...原创 2018-09-16 20:03:10 · 609 阅读 · 0 评论 -
go语言 全局变量和局部变量
一、局部变量 1 定义在{}里面的变量时局部变量,只能在{}里面有效 2 执行到定义的那句话,开始分配内存空间,离开作用域自动进行释放 3 作用域,就是变量作用的范围package mainimport "fmt"func test() { i := 111 fmt.Println("i=", i)}func main() { test() {...原创 2018-09-16 21:56:02 · 20046 阅读 · 0 评论 -
go语言 指针_new函数_指针变量做函数参数
如果学过C的都知道,指针很多地方都要用到,我们声明一个变量,其实就是就是开辟一块内存空间,我们在操作变量的时候,并不是直接取操作变量存在的空间,而是这个变量的内存地址。变量名对内存地址的引用。因此声明一个变量包含:内存空间和内存地址package mainimport "fmt"func main() { // 对于任意一个变量,都有两个含义:内存和地址 var ...原创 2018-10-10 21:27:57 · 402 阅读 · 0 评论 -
Go语言 数组初始化和基本操作
package mainimport "fmt"func main() { // 数组同一类型的集合 var arr [50]int // 1 赋值 // 操作数组,下标从0开始,索引从0到len()-1 for i := 0; i < len(arr); i++ { arr[i] = i + 1 fmt.Printf("arr[%v] = %v\n", i, a...原创 2018-11-11 23:41:30 · 5209 阅读 · 0 评论 -
go语言 随机数的生成和应用
package mainimport "fmt"import "math/rand"import "time"func main() { // 设置种子,我们只需要设置一次即可 //rand.Seed(600) // 如果种子一样,则每次运行程序产生的随机数都一样 rand.Seed(time.Now().UnixNano()) // 以当前的系统时间为种子数 fo...原创 2018-12-12 23:10:18 · 332 阅读 · 0 评论 -
go语言 冒泡排序原理
一、概述 go语言中的冒泡排序和java中的冒泡排序的原理一样,如果你懂得java的冒泡排序,那么go只是换了一种写法而已。冒泡,简而言之,就是相邻的两个数据进行比较,进行移位,向冒泡一样。例如一个集合有n个数,那么排序的次数就是n-1次排序,每次排序的过程中,这次排序需要进行n-1-i此移位。就是两个for循环,外循环小于n-1,内循环小于n-1-i二、代码示例packa...原创 2018-12-13 23:49:23 · 273 阅读 · 0 评论 -
go语言 数组做函数参数和数组指针做函数参数
一、数组做函数参数 数组做函数参数:在传递过程中,传递的是实参中每个元素的拷贝,如果实参数组较大,效率比较低package mainimport "fmt"//数组作为函数的参数,是进行值传递//实参数组的每一个元素,在传递的时候,都给形参拷贝一份,因此当实参数组较大,效率就比较低//简而言之:形参数组是实参数组的复制品func transferAndModify(a...原创 2018-12-15 11:38:41 · 3432 阅读 · 0 评论 -
go语言 切片
一、概述数组的长度定义之后,就无法进行修改;数组是一种值类型,每次传递都会产生一个副本,当传递的数组比较大的时候,会影响传递效率。很难满足在实际开发中现实需要,因此go语言为我们提供了一种数组切片(slice)来弥补不足 切片并不是数组或者数组的指针,它是通过内部指针和相关的属性引用数组片段,以实现变长方案(扩容) slice并不是珍珍意义上动态数组,而是一种引用类。slice总是指向一...原创 2018-12-15 16:45:42 · 119 阅读 · 0 评论 -
go语言 切片的截取和底层数组关系
一、切片的截取 就和java里面的数组一样,操作数组和数组中的元素 代码示例 package mainimport "fmt"func main() { arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} // [low:high:max] 去下标从low开始的元素,len = high - low,cap = ...原创 2018-12-23 11:11:11 · 453 阅读 · 1 评论 -
go语言 append函数和copy函数的应用
一、append函数append函数向slice尾部追加数据,返回一个新的slice对象package mainimport ( "fmt")func main() { s1 := []int{} // s1 := make(int[],0) fmt.Println("s1 = ", s1) fmt.Printf("len(s1)= %d, cap(s1) = %d...原创 2018-12-23 16:12:16 · 1358 阅读 · 0 评论 -
go语言 goto
一.针对于go语言,goto的就是一个标签,相当于html中的<a target='xxx' href='#'>sss</a>,可以直接跳转到某处二.示例原创 2018-07-21 09:09:55 · 989 阅读 · 0 评论 -
go语言 range迭代使用
一. 在go语言中,相对于其他for循环语言,很多时候,我们用range迭代将更加简单,方便二. 如下是用代码逐步来详细讲解range的从for的演变过程,过程通俗易懂实例: str := "abcd" // 采用自动推导类型 // 通过for循环打印每一个字符 for i := 0; i < len(str); i++ { ...原创 2018-07-05 22:55:21 · 820 阅读 · 0 评论 -
go语言 入门程序--HelloWorld
// 1> go语言以包作为管理单位// 2> 每个文件必须先声明包// 3> 程序必须有一个main包package mainimport "fmt"// 入口函数func main() { // 左函数必须和函数名同行// 调用函数,大部分需要导入包 Println会自动换行fmt.Println("hello world") // go语言结尾没...原创 2018-06-30 12:39:21 · 314 阅读 · 0 评论 -
go语言 命令行高效编译运行Go程序
一.概述 上一篇文章中详细讲解了一个go语言编写简单的HelloWorld程序,那么我们该如何快速编译和运行呢二.运行helloworld程序 1.编写程序如下图所示: 2.Ctrl + S 保存后,代码会自动格式化,如果代码没有自动格式化,说明很可能代码逻辑或者格式错误 3.CTR+R编译运行,在同一个目录下仅仅只能运行一个go文件,此处...原创 2018-06-30 13:08:58 · 5956 阅读 · 0 评论 -
go语言 变量的声明与使用
package mainimport "fmt" // 导入包,必须要使用func main() {// 一.变量 程序运行期间 可以改变的量// 1.声明格式 var 变量名 变量类型, 变量声明了,必须要使用// 2.只是声明没有初始化的变量,默认值为0// 3.在一个{}中,声明的变量名是唯一的var a intfmt.Println("a=", a)// 4...原创 2018-06-30 20:33:20 · 780 阅读 · 0 评论 -
go语言 自动推导类型
// 一. 赋值,赋值前,必须进行变量的声明var a inta = 10fmt.Println("a = ", a)// 二. :=b 自动推导类型,先声明b的类型,再给b赋值为20// 自动推导,同一个变量名只能使用一次,用于初始化b := 20b = 23fmt.Println("b = ", b)// 三 .b := 30 //前面已经有变量b,不能再...原创 2018-06-30 20:36:05 · 1536 阅读 · 0 评论 -
go语言 println和printf
一.概述 分析printf和println的区别二.区别 在C/C++中,printf可以实现格式化进行输出操作,java中,println会自动换行,看过源码的人就可以很清楚的了解到三.示例...原创 2018-06-30 20:40:26 · 785 阅读 · 0 评论 -
go语言 多重赋值和匿名变量
一.概述 此处将详解go语言中的多重赋值和匿名变量的使用二.多重赋值 1. 传统方法交换两个变量的值,定义一个局部变量temp a, b := 10, 20 // 利用自动推导类型 // 交换a,b两个变量的值 var temp int temp = a a = b...原创 2018-06-30 20:53:22 · 981 阅读 · 0 评论 -
go语言 常量使用
// 变量:程序运行期间,可以改变的量 变量声明需要关键字 var// 常量:程序运行期间,不可以改变的量 常量的声明需要关键字 constconst a int = 10//a = 20 // err 常量不允许修改fmt.Println("a = ", a)const b = 10.2 // 没有使用 :=fmt.Printf("b type is %T\n", b)f...原创 2018-06-30 21:01:51 · 465 阅读 · 0 评论 -
go语言 常量和变量
一.不同类型的变量声明(定义) 1.传统防水 var a int var b float64 2.可以自动推导类型 var ( a int b float64 ) a, b = 2, 3.14 fmt.Println("a = ", a) fmt.Println("b = ", b)二.常量的定义 1.传统方式 const i int = 2 c...原创 2018-06-30 21:07:59 · 169 阅读 · 0 评论 -
go语言 iota枚举类型
一.概述 go语言中的枚举,和java中一样,都是从0开始二.说明 // 1.iota常量自动生成器,每隔一行,自动累加1// 2.iota给常量赋值用const (a = iota //0b = iota //1c = iota //2)fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)// 3.iota遇到...原创 2018-06-30 21:12:01 · 1032 阅读 · 0 评论 -
go语言 bool类型
// 1 声明类型,没有初始化,零值(false)var a boola = truefmt.Println("a = ", a)// 2 自动推导类型var b = falsefmt.Println("b = ", b)c := falsefmt.Println("c = ", c)原创 2018-07-01 09:02:56 · 6290 阅读 · 0 评论 -
go语言 float浮点型
一.float类型分为float32和float64两种类型 // 声明变量 var f1 float32 f1 = 3.14 fmt.Printf("f1的type is %T\n", f1) fmt.Printf("f1 = %3.2f\n", f1) // 自动推导类型 f2 := 3.45 fmt.Printf("f...原创 2018-07-01 19:36:55 · 6023 阅读 · 0 评论 -
go语言 复数类型
一. 针对于go语言,有复数类型,和我们数学中的复数一样,都是由整数和复数i二.详细示例讲解 示例1:var x1 complex128 t1 = 2.1 + 3.14i fmt.Println("t1 = ", t1) // 此处的结果 示例2:// 自动推导类型t2 := 3.2 + 4.23ifmt.Printf("t2 type i...原创 2018-07-03 19:42:57 · 4583 阅读 · 0 评论 -
go语言 字符和字符串
一.字符类型 var ch byte // 声明字符类型 ch = 97 // 格式化输出,%c以字符型输出,%d以整型输出 fmt.Printf("ch = %c, ch = %d\n", ch, ch) ch = 'a' // 字符以单引号 fmt.Printf("ch = %c, ch = %d\n", ch, ch) ...原创 2018-07-03 20:15:08 · 4158 阅读 · 0 评论 -
go语言 if-else
一.概述 在go语言中,if语句和if-else条件二.实例1 var a int = 5 if a == 5 { fmt.println("a = ",a) // 此处结果为5 }三.实例2 // 此处在a的地方采用自动推导类型,然后采用判断 if a := 10; a == 10 { // 条件可以复制和...原创 2018-07-05 21:46:38 · 315 阅读 · 0 评论 -
go语句 switch语句
一.go语言中的switch语句相对其他语言来说,更具有灵活性二.示例一 var num int fmt.Print("请按下电梯楼层:") fmt.Scan(&num) // scan带表阻断等待输入 &代表取地址值 switch num { // switch后面写的是变量本身 case 1: fmt.Print...原创 2018-07-05 21:53:03 · 160 阅读 · 0 评论 -
go语言 切片做函数的参数
通过操作元素的地址,改变元素 package mainimport ( "fmt" "math/rand" "time")func initData(s []int) { //设置种子 rand.Seed(time.Now().UnixNano()) for i := 0; i < len(s); i++ { s[i] = rand.Intn(100) /...原创 2018-12-23 17:23:50 · 928 阅读 · 0 评论