Go语言中文网 为您找到相关结果 167

Go语言中的变量

## 1 概述 变量(Variable)是程序运行过程中,内容可以变化(修改)的量,变量的功能是存储用户的数据,是计算机语言中能储存计算结果或能表示值抽象概念。 变量,是通过变量的标识符定位值的过程。变量的内存模拟演示: ![变量的内存模拟演示](http://www.hellokang.net/images/posts/go/go-variable.png) ## 2 定义:声明和初始化 定义变使用var关键字,需要指定其类型,可以同时初始化,如果没有指定初始化值,则使用类型的默认值,语法如下: ``` // 声明变量,未初始化(默认值初始化) var name string // 声明变量,特定值初始化 var user string = "Hank" ``` Go语言中的变量必须声明后...阅读全文

博文 2018-10-30 22:00:19 hanzkering

3.2.10Golang的函数进阶(作用域,函数类型)

总目录:https://www.jianshu.com/p/e406a9bc93a9 Golang - 子目录:https://www.jianshu.com/p/8b3e5b2b4497 变量作用域 全局变量 全局变量是定义在函数外部的变量,它在程序整个运行周期内都有效。 在函数中可以访问到全局变量。 package main import "fmt" var num int = 10 func sum() { fmt.Println("sum中访问num:", num) num = 20 fmt.Println("sum中修改num:", num) } func main() { sum() fmt.Println("sum外访问num:", num) } ---------- sum中...阅读全文

博文 2020-03-18 21:33:18 寒暄_HX

Python分支循环:if elif for while

Python中一个缩进代表一个层级,推荐4个空格 分支与循环 条件是分支与循环中最为核心的点,解决的问题场景是不同的问题有不同的处理逻辑。当满足单个或者多个条件或者不满足条件进入分支和循环,这里也就说明这个对相同问题处理执行逻辑依据具体参数动态变化,由此产生多种可能性,但要求其中一个可能性必须执行其他可能性不需要执行时候使用分支。 循环的核心是边界值,通过控制边界值控制循环的执行次数,循环体中逻辑是重复执行直至到达边界值,跳出循环。 在Python中分支和循环不能形成作用域,在其他如Golang语言中分支和循环会形成一个作用域。Python中没有 ++ -- 自增自减这个运算符,并且for循环是用来遍历可迭代数据。 分支与循环规范: 不推荐在分支和循环下写大量逻辑代码,封装成函数或者写少量几...阅读全文

博文 2020-03-26 17:33:10 我爱学python

golang[41]-区块链-默克尔树构建

大自然的启示Banyan树的启示:印度banyan树,最大的一颗可以长到1万平方米以上。其如此巨大的秘密就在于其枝干也会产生根,起到支撑,从而作为附属树干,继续生成分支。大自然给人太多启示……Merkle TreeMerkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树是一种数据结构,Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。Merkle树是使区块链发挥作用的基本组成部分。虽然理论上可以在没有Merkle树的情况下制作区块链,但只需创建直接包含每个事务的巨型块头,这样做会带来巨大的可扩展性挑战,可以说无可置疑地使用区块链的能力超出了所有范围,从长远来看,功能强大的电脑。...阅读全文

博文 2019-02-21 15:36:08 jonson_jackson

GO语言学习-流程控制

循环: ‘for’是GO的唯一循环结构。 for循环的使用方法与C语言的唯一区别是没有了‘()’,另外可以省略分号。 if: if语句的使用方法与C语言的唯一区别是没有了‘()’。 if语句可以在条件之前执行一个简单的语句。 例 if v := x * n; v < lim { return v } 注意:这个语句定义的变量v的作用域仅在if范围之内(包含else) switch: switch使用时也无需使用() switch的条件从上到下执行,当匹配成功是停止,故无需像C语言中使用break GO语言中的switch可以使用没有条件的switch, 例 switch { case a<10: fmt.Println("10!") case a<20: fmt.Println("20!")...阅读全文

博文 2015-06-17 23:01:28 phlong999

再学JavaScript ES(6-10)全版本语法大全

​再学JavaScript ES(6-10)全版本语法大全 【点击下载完整无密课程】应对更复杂的场景,提升自己的技术实力,优化臃肿的代码,都需要对打牢语法基础。本课涉及JavaScript ES6到10的语法教学,内容全面丰富,熟练掌握语法,很多依赖第三方库才能做到的事用原生JS寥寥几行代码就可迎刃而解。适合人群各个阶段的前端工程师技术储备要求掌握JavaScript基础知识和ES5语法章节目录:第1章 课程介绍与环境搭建JS作为前端的立身之本,让大家了解学习这门课的必要性。考虑到很多同学刚刚接触前端或者对工程化方法不太了解,为了快速进入到学习状态,我们提供了极其简单的方式帮大家准备好学习环境。1-1 课程导学 试看1-2 电子书位置1-3 环境准备1-4 Node 安装1-5 初始化项目1...阅读全文

博文 2020-01-09 01:41:19 xiaofanfan

一日一学_Go从错误中学习基础一

在写Go代码时,多少会出一些错误,我把这些常见错误整理出来。一是再次让自己重新认识Golang,进行不足的学习。二是分享出来让更多人认识Golang。 短声明使用 短声明只能出现在函数内部。 func(){ a := 10 }() 短声明的重新声明。官方解释:Unlike regular variable declarations, a short variable declaration may redeclare variables provided they were originally declared earlier in the same block (or the parameter lists if the block is the function body) with ...阅读全文

博文 2017-02-28 05:13:23 静静看的动漫武晓

Go语言基础:if,goto,for,switch

Go的if,for,switch跟C的区别 有过C基础的人,都知道if、for、switch的条件语言都是有括号的。基本格式: if(条件判断语言) {} for(语句1;语句2;语句3) {} switch(语句){} 在go中,这些语法规则跟C还是有差别,概括为一句话就是去掉了括号。语法规则如下: if 语句 {} for 语句1;语句2;语句3 {}//跟C一样,这三个语句可以省掉任何一个语句 switch 语句 {} 区别其实很简单。正由于没有了括号,导致他们与C有了更多的功能。 if if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了。 if x:=getXdata(); x>10 { //x的作用域只在这个括号...阅读全文

博文 2016-09-07 00:00:00 uudou

go学习--控制语句

if a := 1; a > 1 { //定义变量a,a只在if语句中有效 fmt.Println("a > 1") } else { if a := 10; a > 1 { fmt.Println(a) //结果为10,和c语言变量作用域一致 } else { fmt.Println(a) } } for的三种形式 func main() { count := 3 for i := 0; i < count; i++ { //经典形式 fmt.Println(i) } i := 0 for i < count { //类似c中的while,只带终止条件 fmt.Println(i) i++ } i = 0 for { //死循环 if i < count { fmt.Println(i) ...阅读全文

博文 2016-10-23 02:00:02 w007d

【Go语言】【8】GO语言的条件语句和选择语句

一、条件语句条件语句即if-else语句,通常用来判断条件是否满足,下面通过猜价格游戏来了解条件语句:1、猜价格游戏假如有一件商品价格为81元,在[0,100]范围之内系统请猜测者输入一个价格猜测者:50系统提示:低了猜测者:87系统提示:高了猜测者:83系统提示:高了猜测者:81系统提示:恭喜您猜对了最终效果如下图:2、猜价格代码实现package mainimport ( "fmt" "math/rand" "time")func main() { randrom := rand.Intn(100) fmt.Println("请输入0至100范围内的整数价格") for { var input int fmt.Scanf("%d\n", &input) if input < randro...阅读全文

博文 2017-02-09 15:59:14 qingkechina

golang 基础(F)函数的参数

square-gopher.png 函数 函数是由函数名,参数,返回值和函数体所组成。 func add(a, b int) int {} 定义函数并且复习一下之前的 switch 语句 func eval(a, b int,op string) int { switch op { case "+": return a + b case "-": return a - b case "*": return a * b case "/": return a / b default: panic("unsupported operation: " + op) } } 在 go 语言中 { 需要 bar() 在同一行不言就会报错 func bar() //报错 { } .\funtions.go:...阅读全文

博文 2019-03-16 18:34:42 zidea

【Go语言】【9】GO语言的循环语句

一、循环语句 循环语句即for语句,您可能说:“不对,它不仅仅是for语句,还有while或者do-while”,真的很遗憾,GO语言真的只有for,它认为提供一种就可以了,提供多了怕给程序员带来麻烦 :)下面我们使用for循环计算1+2+3+4+……+100的和,和其它语言一样,我们使用循环100次的办法:定义一个变量,让它从1开始循环100次,每次都判断它是否小于101,若是变量就加1代码如下:// 声明变量sum并初始化为0sum := 0// 定义变量i,循环100次,每次判断是否小于101for i:= 1; i< 101; i++{ // 累加总和 sum += i}// 打印结果fmt.Println("sum=", sum)结果如下图:1、习惯的养成若您一直使用C/C++/J...阅读全文

博文 2017-02-09 15:59:18 qingkechina

go语言作用域踩坑

今天饭饭给我出了个题目,下面这段代码为什么报错,怎么改? 123456789101112131415161718192021222324252627package mainimport ( "fmt")type A struct { s string}func main() { var a *A if check(a) { a, err := generate() fmt.Println(a.s, err) } fmt.Println(a.s)}func generate() (*A, error) { return &A{s: "b"}, nil}func check(a *A) bool { return true} 运行一下,发现报错如下: 1234567panic: runtime ...阅读全文

博文 2017-11-04 01:25:37 Youmai の Blog

一文带你了解Go的工程管理

大家好,我是asong,这是我的第三篇原创文章。这一篇将对Go的工程管理进行详细的介绍,学习了这些,对我们的日常项目开发有很大帮助。最后对go module的使用进行详细介绍(一定要看到最后呦!)。 一、golang中包的概念 Go语言中使用包来组织源代码的,并且通过命名空间进行管理。所以所有源代码都必须属于某个包。每个go文件中第一行都必须是以package name声明自己所在包。 在介绍包之前,我们需要了解一下Go作用域问题。Go语言的作用域有一点区别于其他语言,所以一定好好掌握这一点,要不就会出现令人头皮发麻的bug,浪费我们开发的时间。 Go语言有三种类型的作用域: 全局作用域:所谓全局作用域,就是在任何地方都可以访问的标识符。可以分为两类,一类是Go语言内置的预声明标识,比如类型...阅读全文

博文 2020-05-26 17:33:12 sunsong1997

Go 语言学习笔记 -第2章 程序结构

Go 语言学习笔记 -第2章 [toc] 程序结构 名称 首字母大写的一般是public方法,首字母小写不能直接调用 使用驼峰式的风格 声明 每一个文件都是以package声明开头,表明文件是属于哪个包有且只有一个main包 变量 1.变量是程序的基本组成单位 变量相当于内存中一个数据储存空间的表示你可以把变量看做一个房间的门牌号通过门牌号我们可以找到房间 同样的道理,通过变量名可以访问到变量值 2.变量使用的基本步骤:1、声明变量(定义变量)2、赋值3、使用 3.变量使用注意事项:1、变量表示内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型) 2、Go变量使用三种方式1)指定变量类型,声明后若不赋值使用默认值2)根据值自行判定变量类型3)省略var, 注意:= 左侧的变量...阅读全文

博文 2020-01-08 20:32:42 Mark110

Go 常量学习-可视化指南

> Go 的类型常量和非类型常量是两个必须要了解的关键概念 不要忘记在文章下面有很多代码示例,因此你要确保点击这些链接并尝试运行这些程序。 ## 你为什么使用常量? ![why_might_you_use_constants?.image ](https://raw.githubusercontent.com/studygolang/gctt-images/master/go-const-guide/1*r734fn1RBz1c1J2cKM7ZGw.png) 你不想在代码中到处定义[魔法数值](https://en.wikipedia.org/wiki/Magic_number_%28programming%29),于是使用常量来声明它们,并在代码中再次使用它们。 魔法数值是不安全的,你需要...阅读全文

Go语言学习 - GC

背景知识 什么是标记与清理, 什么是三色标记 我们从根数据出发(学名叫RootSet): 向前走第一轮, 得到如下结果: 直接引用根数据的变量包含有(A,F). 第一轮结束, 将ABC三个变量标记成灰色. 开始第二轮, 我们从A出发, 首先我们将A标记成黑色, 然后发现引用了A的有(B,C,D)两个变量, 这两个变量通过A间接引用了根数据, 因此也是有效的, 我们将DB标记成灰色; 我们使用同样的办法在刚刚的(F)变量上, 第二轮结束, 我们得到了(B,C,D)变量是有效的, 截止目前, 一共有(A,B,C,D,F)是有效变量 不停重复上面的操作: 从灰色的点出发, 将自己标记成黑色, 将自己能到达的点标记成灰色, 然后再下一轮, 再从灰色的点出发 到最后所有的点只能是黑色+白色两类, 黑色...阅读全文

博文 2019-12-08 22:34:32 xiaohan.liang?

Go语言基础:if,goto,for,switch

Go的if,for,switch跟C的区别 有过C基础的人,都知道if、for、switch的条件语言都是有括号的。基本格式: if(条件判断语言) {} for(语句1;语句2;语句3) {} switch(语句){} 在go中,这些语法规则跟C还是有差别,概括为一句话就是去掉了括号。语法规则如下: if 语句 {} for 语句1;语句2;语句3 {}//跟C一样,这三个语句可以省掉任何一个语句 switch 语句 {} 区别其实很简单。正由于没有了括号,导致他们与C有了更多的功能。 if if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了。 if x:=getXdata(); x>10 { //x的作用域只在这个括号...阅读全文

博文 2016-10-04 03:00:00 uudou

程序员的自我修养 IO/CUP密集型线程

有关进程线程协程的概念在上一篇文章 golang协程为什么比线程轻量https://www.jianshu.com/p/dd4a480a1410已经解释,有需要的同学可以查看。 多进程与单进程相比的优势: 1.某个操作可能会陷入长时间等待,等待的线程会进入睡眠状态,无法继续执行。多线程执行可以有效利用等待时间。典型的例子是等待网络响应,这可能要花费数秒甚至数十秒。 2.某个操作(常常是计算)会消耗大量的时间,如果只有一个线程,程序和用户之间的交互会中断。多线程可以让一个线程负责交互,另一个线程负责计算。 3.程序逻辑本身就要求并发操作,例如一个多端下载软件(例如Bittorrent) 4.多CPU或多核计算机,本身具备同时执行多个线程的能力,因此单线程程序无法完全全面地发挥计算机的全部计算能...阅读全文

博文 2019-08-04 17:32:39 one_zheng

Go-变量

要点 var用来定义一个变量 可以用:=这种shorter的方式,此时不用var const定义常量 var/const (…)用来定义一组变量或常量 作用域同C/C++/Java等语法 变量声明&赋值 package main import "fmt" // Printf() /* D:\examples>go run helloworld.go Hello, world! y - Hello world! z - Hello world! string a string b Hello, world! 1234567 y - Hello world! 1234567 D:\examples> */ func main() { // <> Page 19: ...阅读全文

博文 2016-10-20 03:00:09 u013344915

Golang面试题解析(二)

12.是否可以编译通过?如果通过,输出什么?func main() { i := GetValue() switch i.(type) { case int: println("int") case string: println("string") case interface{}: println("interface") default: println("unknown") } } func GetValue() int { return 1 }解析考点:type编译失败,因为type只能使用在interface13.下面函数有什么问题?func funcMui(x,y int)(sum int,error){ return x+y,nil }解析考点:函数返回值命名 在函数有多个返...阅读全文

博文 2018-07-02 12:21:53 梦朝思夕

BDEX知识科普之去中心化交易协议与跨链的关系

本文引自区块链研习社。 2019年是去中心化交易所成长迅速的一年。随着数字货币生态发展,去中心化交易逐渐成为币圈最喜欢的方式。各路去中心化交易所接连出现,犹如雨后春笋,好不热闹。 不过对用户来说,虽然去中心化交易技术一直在发展,但是数字货币流通中仍然有一个痛点,就是跨链。 跨链和去中心化撮合交易有什么关系呢?让我们来分析一下,什么是去中心化撮合交易,以及什么是跨链。 去中心化交易协议 简介:通过链上或链下撮合引擎,撮合买家和卖家进行数字货币交易,去中心化撮合交易引擎,就是服务于去中心化交易所的撮合交易程序。 解决问题:解决数字货币买卖交易效率和资金安全问题。 跨链 简介:同一数字货币资产同时在不同公链上流通或同一应用同时在不同公链运行,目前主要是资产跨链流通。 解决问题:使得不同公链上的用户...阅读全文

Golang基础语法:变量(一)--十安辰

变量介绍 概念 变量相当于内存中的一个数据存储空间的地址,你可以把计算机看作一栋大楼,变量就是大楼的房间的门牌号,我们通过门牌号找到对应房间,存放货物 ,取用货物。 变量的使用的基本步骤 1、变量声明(定义变量) 2、变量赋值,变量初始化 3、使用变量 例子: package main import "fmt" func main() { //变量声明(定义) var a int //给a赋值 a = 10 //使用变量 fmt.Println("i=",i) } Golang变量使用的三种方式 请依据以下例子理解 package main import "fmt" func main() { //第一种使用方式:指定变量类型,声明变量后若不赋值,则使用默认值 //int 的默认值是0,st...阅读全文

博文 2020-05-14 08:32:44 十安辰

golang 基础线

go结构体详解 go 是面向对象语言 封装 状态 (属性) 行为 (方法) 可见性/不可见性 (大写/小写) 可重用性 继承 (组合) 方法的重载 多态 接口 传统没,面向对象编程语言 数据结构构成一个类 你可以创建一个对象通过类的模板 类中封装了属性和方法 go中的类型 Go 类型:基本类型、引用类型、结构类型、自定义类型 Go 语言中,引用类型有 切片、字典(map)、接口、函数类型 以及 通道(chan) 。 结构类型是用来描述一组值的,比如一个人有身高、体重、名字和年龄等,本质上是一种聚合型的数据类型 类型别名 Go 的编译器不会像 Java 的那样,帮我们做隐式的类型转换。 package main import "fmt" type foo int func main() { v...阅读全文

博文 2017-07-14 11:06:20 seven_son

《Go语言四十二章经》第五章 作用域

《Go语言四十二章经》第五章 作用域 作者:李骁 ## 5.1 作用域 * 局部变量 在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。 * 全局变量 作用域都是全局的(在本包范围内) 在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。 全局变量可以在任何函数中使用。 * 简式变量 使用 := 定义的变量,如果新变量p与那个同名已定义变量 (这里就是那个全局变量p)不在一个作用域中时,那么Go 语言会新定义这个变量p,遮盖住全局变量p。刚开始很容易在此犯错而茫然,解决方法是局部变量尽量不同名。 >注意,简式变量只能在函数内部声明使用,但是它可能会覆盖函数外全局同名变量。而且你不能在一个单独的声明中重复声明一个变量,但...阅读全文

博文 2018-09-24 19:54:55 roteman

深入Go语言 - 4 声明和作用域

目录 [−] 标签作用域空标识符和预定义标识符输出标识符iota函数声明方法声明 本文介绍Go的声明和作用域。 声明用于常量、变量、类型、函数、标签和包。 每个非空标识符(identifier)必须声明。同一代码块中标识符只能声明一次。标识符不能同时声明在文件代码块和包代码块中。 空标识符为下划线 "_",它可以做为匿名占位符。 一个声明的标识符的作用域总结如下: 预声明的标识符的作用域是全局代码块如int、true等 顶层的(函数之外)的标识符, 用来声明常量、类型、变量或者函数(非方法), 这些标识符的作用域是包代码块 一个输入的包的包名的作用域是这个文件的文件代码块 用来表示方法 receiver、函数参数、结果变量的标识符的作用域是函数体 在一个函数内声明的常量或者变量的标识符的作用...阅读全文

博文 2017-02-08 12:53:38 smallnest

Golang学习笔记4——控制语句

1.基础知识补充(指针、递增递减语句) 指针 go虽然保留了指针,但是与其它编程语言不同的是,在go当中不支持指针运算以及"->"运算符,而直接采用"." 选择符来操作指针目标对象的成员 操作符"&"取变量地址,使用"*"通过指针间接访问目标对象 默认值为nil而非null 在go中,++与--是作为语句而并不是作为表达式 a := 1 a++ //但不能这样:a := a++,只能作为单独的语句独占一行 2.if判断语句 条件表达式没有括号 支持一个初始化表达式(可以是并行方式) 左大括号必须和条件语句或else在同一行 支持单行模式 初始化语句中的变量为block级别,同时隐藏外部同名变量 func main(){ a := 10 if a:=1 { fmt.Println(a) } f...阅读全文

博文 2017-10-24 16:00:01 marks-gui

Go语言中的变量

1 概述 变量(Variable)是程序运行过程中,内容可以变化(修改)的量,变量的功能是存储用户的数据,是计算机语言中能储存计算结果或能表示值抽象概念。变量,是通过变量的标识符定位值的过程。变量的内存模拟演示: 2 定义:声明和初始化 定义变使用var关键字,需要指定其类型,可以同时初始化,如果没有指定初始化值,则使用类型的默认值,语法如下: // 声明变量,未初始化(默认值初始化) var name string // 声明变量,特定值初始化 var user string = "Hank" Go语言中的变量必须声明后才可以使用,不能直接使用未定义的变量。 3 类型默认值(零值) Go语言的类型默认值如下所示: 整型和浮点型变量的默认值为 0。 字符串变量的默认值为空字符串。 布尔型变量...阅读全文

博文 2018-10-28 07:35:08 小韩说课

Golang模板编译引擎FET

在实际工作中,越来越多的新项目开始用go语言进行开发,如果是前后端分离的项目,对于前端开发人员来说,后端使用php或者go亦或者node等影响不是特别大。但如果是项目对SEO\兼容性有要求、需要采用同步渲染的方式的话,就少不了与golang的模板引擎打交道。于是问题来了,该选用哪个模板引擎呢?如果你是个python使用者,那么pongo2这个模板引擎应该不错。又或者你习惯mustache语法,那么可以看看mustache,当然如果考虑性能,习惯比较原生的语法的,hero这个模板引擎应该是个不错的选择。但如果你是个php使用者,写惯了smarty,而且服务端更喜欢使用html/template官方模板语言包的话,FET应该就是个不错的选择了。官方html/template包提供的模板功能要有的...阅读全文

博文 2019-07-07 07:32:39 轩子哲

Go基础系列:流程控制结构

条件判断结构:if else 分支选择结构:switch case 循环结构:for break:退出for或switch结构(以及select) continue:进入下一次for迭代 虽然Go是类C的语言,但Go在这些流程控制语句中的条件表达式部分不使用括号。甚至有些时候使用括号会报错,但有些复杂的条件判断需要使用括号改变优先级。 如: if (name == "longshuai" && age > 23) || (name == "xiaofang" && age < 22) { print("yeyeye!!!") } if语句 if condition1 { // do something } else if condition2 { // do something else }...阅读全文

博文 2018-11-23 09:10:52 f-ck-need-u

Go语言基础:if,goto,for,switch

Go的if,for,switch跟C的区别 有过C基础的人,都知道if、for、switch的条件语言都是有括号的。基本格式: if(条件判断语言) {} for(语句1;语句2;语句3) {} switch(语句){} 在go中,这些语法规则跟C还是有差别,概括为一句话就是去掉了括号。语法规则如下: if 语句 {} for 语句1;语句2;语句3 {}//跟C一样,这三个语句可以省掉任何一个语句 switch 语句 {} 区别其实很简单。正由于没有了括号,导致他们与C有了更多的功能。 if if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了。 if x:=getXdata(); x>10 { //x的作用域只在这个括号...阅读全文

博文 2016-09-07 01:00:00 uudou

go

变长参数 nums …int 格式化: 在命令行输入 gofmt –w program.go 会格式化该源文件的代码然后将格式化后的代码覆盖原始内容(如果不加参数 -w 则只会打印格式化后的结果而不重写文件);gofmt -w *.go 会格式化并重写所有 Go 源文件;gofmt map1 会格式化并重写 map1 目录及其子目录下的所有 Go 源文件。 格式化:gofmt 也可以通过在参数 -r 后面加入用单引号括起来的替换规则实现代码的简单重构,规则的格式:<原始内容> -> <替换内容> 例如 gofmt -r ‘(a) -> a’ -w .go, gofmt -r ‘a[n:len(a)] -> a[n:]’ –w .go, c1 := make(chan int) 无缓存 放入第...阅读全文

博文 2018-01-02 22:31:01 u013115610

小白想问一下关于sort的用法的问题

假设有如下伪代码: ```go //--------------------------------AREA 1 BEGIN type A struct{ x int y int } //---------------------------------AREA 1 END func f(){ a = []A{A{1,1},A{1,2}}//或更多,仅仅是个例子 /** 目的:使用sort将a数组先按x排序,再按y排序 条件:不在AREA 1中添加代码(即f函数体外) 原因:希望排序条件的相关代码作用域仅仅存在于f函数中 问题:不知道该如何解决这个问题,或者能仅仅提供解决这个问题的关键字也行 */ } ``` 找了半天...阅读全文

我要在栈上。不,你应该在堆上

ixyP3XP.jpg 原文地址:我要在栈上。不,你应该在堆上 前言 我们在写代码的时候,有时候会想这个变量到底分配到哪里了?这时候可能会有人说,在栈上,在堆上。信我准没错... 但从结果上来讲你还是一知半解,这可不行,万一被人懵了呢。今天我们一起来深挖下 Go 在这块的奥妙,自己动手丰衣足食 问题 type User struct { ID int64 Name string Avatar string } func GetUserInfo() *User { return &User{ID: 13746731, Name: "EDDYCJY", Avatar: "https://avatars0.githubusercontent.com/u/13746731"} } func main...阅读全文

博文 2019-05-21 00:34:41 EDDYCJY

【golang】变量的stack与heap分配

堆栈定义 栈 stack:由操作系统自动释放,存放函数的参数值、局部变量等,更新速度快。 堆 heap:一般由程序员释放,在Golang中自动垃圾回收gc掉,存放全局变量、共享变量等。 golang 参数传递重点 使用值传递,该值存放在stack上,当return时候会自动释放。 使用引用传递,该值存放在heap上,需要gc。 使用引用传递,因为复制的是一份地址,减少大的结构体传递的内存占用。但因为存放在heap上需要垃圾回收掉,运行速度要比值传递慢。所以出来共享传递参数外,尽量值传递 golang 变量函数中分配位置 go语言编译器会自动决定把一个变量放在栈还是放在堆,编译器会做逃逸分析(escape analysis),当发现变量的作用域没有跑出函数范围,就可以在栈上,反之则必须分配在堆...阅读全文

博文 2020-04-16 03:32:47 dongzaidong

Golang语言值传递

前言:打铁要趁热,因为以前学过java和c语言 知识点预览 //1.值传递与引用传递 //2.defer关键字 //3.作用域 //4.错误处理 //值传递有那些:基本数据类型(int,float,type,array,struct等) //引用传递有那些:复合数据类型(指针,切片,接口等) //1.值传递 func sum(n1,n2 int){ n1++ n2++ } func main(){ sum(10,20)//这样做是引用传递函数内部不会修改它的值 } //2.引用传递 func sum(*n1,*n2 int){ *n1++ *n2++ } func main(){ num1:=10 num2:=20 sum(&num1,&num2)//这样做是值传递 } //defer 关键...阅读全文

博文 2019-06-16 00:32:42 江世文

Golang中的局部变量“何时栈?何时堆?”

一、C/C++报错?Golang通过? 我们先看一段代码 package main func foo(arg_val int)(*int) { var foo_val int = 11; return &foo_val; } func main() { main_val := foo(666) println(*main_val) } 编译运行 $ go run pro_1.go 11 竟然没有报错! 了解C/C++的小伙伴应该知道,这种情况是一定不允许的,因为 外部函数使用了子函数的局部变量, 理论来说,子函数的foo_val 的声明周期早就销毁了才对,如下面的C/C++代码 #include int *foo(int arg_val) { int foo_val = ...阅读全文

博文 2020-03-06 19:32:38 aceld

第二章 程序结构

基础知识结构 命名 声明 变量 赋值 类型 包和文件 作用域 命名 命名规则:一个名字必须以一个字母(unicode字母)或者下划线开头,后面可以跟任意数量的字母数字或者下划线。区分大小写。 go的25个关键字如下: break ; default; func ; interface ;select ; case ; defer ; go ; map ; struct ; chan; else ; goto ; package ;switch ; const ; fallthrough ; if ; range ; type ; continue ; for ; import ; return ; var ; 内建常量与内建函数如下 常量:true ; false ; iota ; nil ...阅读全文

博文 2018-11-01 17:34:39 zhaoxi_yu

Go 之旅二: 流程控制语句

学习 A Tour of Go (中文参考 Go 之旅中文 ) 整理的笔记。介绍流程控制语句 for, if, else, switch 和 defer 的基本概念和使用。 1. for $GOPATH/src/go_note/gotour/flowcontrol/for.go 源码如下: /** * go 语言for 循环 */ package main import ( "fmt" ) func main() { sum := 0 for i := 0; i < 10; i ++ { sum += i } fmt.Println("sum:", sum) // sum: 45 // 初始化语句和后置语句是可选的 sum = 1 for ; sum < 1000; { sum ...阅读全文

博文 2017-03-10 05:50:23 xugang

golang基础--控制语句

go基础之控制语句 补充知识 指针 与其他语言不同,在Go中不支持指针运算即->运算符,而直接采用.选择符来操作指针目标对象的成员。 操作符&取变量的地址,使用*通过指针间间接访问目标对象 默认值位nil,而非NULL 实例代码如下 //指针的使用 package main import "fmt" func main() { a := 1 //定义一个变量,类型位int a++ //必须单独放一行 var p *int = &a // 指针p指向a的内存地址 fmt.Println(p) //访问p fmt.Println(*p) //取p内存地址指向的值 } 运行结果 shell 0xc04200e0b8 //内存地址 2 //地址指向的值 判断if控制语句 条件表达式没有括号 支持一个...阅读全文

博文 2018-07-12 13:30:39 failymao

基本语法 - day 1

变量的定义 /*使用var定义*/ //隐式初始值(初始化为零值) var num1 int var str2 string //显式初始值 var num2 int = 12 var str2 string = "xiaohei" //类型自动推断 var a, b, c = 3, 5, "xiaohei" /*:=方式声明变量*/ f, g := 12, "min" :=方式声明变量不适用于包作用域 在包作用域内的每一行必须是以func、package、import、var、const等关键字开始 内建变量类型 bool、string (u)int、(u)int8、(u)int16、(u)int32、(u)int64、uintptr byte(8bits)、rune(32bits) fl...阅读全文

博文 2019-11-02 21:33:21 aside section._1OhGeD

5.Golang流程控制

一、程序结构 说到流程控制,必须先看下 Go 语言的程序结构: package main // 当前包名 import "fmt" // 导入程序中使用到的包 // 初始化函数 func init() { // 初始化数据 } // 程序入口主函数,且一个 package 只能有一个 main 函数 func main() { fmt.Print("hello world") // 处理逻辑 } 程序的初始化和执行都起始于 main package 包,并且 main() 函数只能在 man 包中,一个项目里也只能有一个 main package。一个 go 程序文件中可以有一个 init(),一个项目中可以有 n 个 init() 函数。 程序包引入执行步骤: 程序文件执行步骤 Go 语言...阅读全文

博文 2018-11-08 00:34:41 野尘lxw

Golang学习笔记-1.7 if-else语句

本文系第七篇Golang语言学习教程 if-else if 是条件语句 语法如下: if condition { } 如果condition为真,则执行{}之间的代码 Go还有可选的else if和else语句 if condition { } else if condition { } else { } else if语句可以有任意数量,从上到下判断。 如果if 或else if判断为真,则执行相应的{}中代码。 如果没有条件为真,则自动执行else代码 先写一个简单的判断数字是奇数偶数的程序: package main import "fmt" func main(){ num := 21 if num % 2 == 0 { //如果 num 取 2 的余数为 0 fmt.Println...阅读全文

博文 2018-07-13 00:34:58 xunk1900

再学JavaScript ES(6-10)全版本语法大全

​再学JavaScript ES(6-10)全版本语法大全 完整无密【点击下载】应对更复杂的场景,提升自己的技术实力,优化臃肿的代码,都需要对打牢语法基础。本课涉及JavaScript ES6到10的语法教学,内容全面丰富,熟练掌握语法,很多依赖第三方库才能做到的事用原生JS寥寥几行代码就可迎刃而解。适合人群各个阶段的前端工程师技术储备要求掌握JavaScript基础知识和ES5语法章节目录:第1章 课程介绍与环境搭建JS作为前端的立身之本,让大家了解学习这门课的必要性。考虑到很多同学刚刚接触前端或者对工程化方法不太了解,为了快速进入到学习状态,我们提供了极其简单的方式帮大家准备好学习环境。1-1 课程导学 试看1-2 电子书位置1-3 环境准备1-4 Node 安装1-5 初始化项目1-6...阅读全文

博文 2020-01-22 04:22:00 daqiuzhang

Go语言核心之美 1.5-作用域

变量的作用域是指程序代码中可以有效使用这个变量的范围。不要将作用域和生命期混在一起。作用域是代码中的一块区域,是一个编译期的属性;生命期是程序运行期间变量存活的时间段,在此时间段内,变量可以被程序的其它部分所引用,是运行期的概念。 语法块是包含在花括号内的一系列语句,例如函数体或者循环体。语法块内部声明的变量是无法被语法块外部代码访问的。我们可以扩展局部语法块的概念,在某些场景下,是不需要花括号的,这种形式称之为词法块。词法块分为几种:全局词法块,包含所有源代码;包 词法块,包含整个package;文件词法块,包含整个文件;for、if、switch语句的词法块;switch或select中的case分支的词法块;当然也包含之前提到的语法块。 声明语句的词法块决定了变量的作用域。Go语言的内...阅读全文

博文 2017-10-27 20:58:12 erlib

Go中变量的作用域

package main import ( "fmt" ) //不同作用域同名变量 var a int //全局变量的声明 func test01(a float32) { fmt.Printf("a type = %T\n", a) } func main() { fmt.Printf("a type = %T\n", a) var a uint8 //局部变量声明 { var a float64 //局部变量声明 fmt.Printf("a type = %T\n", a) } fmt.Printf("a type =%T\n", a) test01(3.14) test02() } func test02() { fmt.Printf("a type = %T\n", a) } //运...阅读全文

Go基础系列:函数(2)——回调函数和闭包

回调函数和闭包 当函数具备以下两种特性的时候,就可以称之为高阶函数(high order functions): 函数可以作为另一个函数的参数(典型用法是回调函数) 函数可以返回另一个函数,即让另一个函数作为这个函数的返回值(典型用法是闭包) 一般来说,附带的还具备一个特性:函数可以作为一个值赋值给变量。 f := func(){...} f() 由于Go中函数不能嵌套命名函数,所以函数返回函数的时候,只能返回匿名函数。 先简单介绍下高阶函数,然后介绍闭包。 高阶函数示例 例如,将函数作为另一个函数的参数: package main import "fmt" func added(msg string, a func(a, b int) int) { fmt.Println(msg, ":"...阅读全文

博文 2018-11-23 09:10:59 f-ck-need-u

4.go语言预定义的名字

主要对应内建的常量、类型和函数。可以再定义中重新使用它们名字的作用域 内建常量: true false iota nil 内建类型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error 内建函数: make len cap new append copy close delete complex real imag panic recove...阅读全文

Learn Golang in Day 8

Learn Golang in Day 8 变量作用域 局部变量 全局变量 形参也是局部变量 局部变量 函数内部声明的变量是局部变量 package main import "fmt" func main() { /* 声明局部变量 */ var a, b, c int /* 初始化参数 */ a = 10 b = 20 c = a + b fmt.Printf("结果: a = %d, b = %d and c = %d\n", a,b,c) } 全局变量 函数体之外定义的变量都是全局变量 全局变量可以在整个包作用域内使用,外部包使用时需要导出 package main import "fmt" /* 声明全局变量 */ var g int func main() { var a, b i...阅读全文

博文 2019-02-03 01:34:43 笑吧小鸟