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

go value receiver, pointer receiver 方法集

go 语言规范里定义的 method sets 规则 Values 可调用的方法(methods receivers) 备注 T (t T) funcXXX 为什么不能调用 (t *T) funcXXX,因为无法保证所有的Value 都可以获取到指针地址(addressable value) *T (t T) funcXXX and (t *T) funcXXX go 自动转化(dereferenced) *T --> T, 所以可以调用 为什么有些值无法获取地址? go spec: https://golang.org/ref/spec#Address_operators 说明了不能寻址的情况。 常见的不能寻址的情况: &m["key"] &afunc() &t.method() var ...阅读全文

博文 2020-03-04 10:32:44 cdz620

interface golang

一个interface{}类型的变量包含了2个指针,一个指针指向值的类型,另外一个指针指向实际的值对一个interface{}类型的nil变量来说,它的两个指针都是0;但是var a *State传进去后,指向的类型的指针不为0了,因为有类型了, 所以比较为false。 interface 类型比较, 要是 两个指针都相等, 才能相...阅读全文

博文 2020-01-15 09:32:41 sphinxLike

三言两语说清楚go语言的module

查看go的版本 go version go从1.11版本开始支持module功能。 如果go的版本是1.11和1.12,项目位于$GOPATH/src里面的时候,module功能不会生效,即使你目录中有go.mod文件也无济于事。 如果go的版本是>=1.13,无论你的项目路径在哪里,只要项目中有go.mod文件,module功能就会生效。 设置环境变量 我的go语言版本是1.11.5,是支持module功能的,但是需要手动开启,方式是设置环境变量,即export GO111MODULE=on,这个只在当前终端生效。 开发一个模块 假设我们开发的模块最终会上传到https://gitee.com/xxfaxy/go-module-test这个地址,我们记为A。 在$GOPATH/src之外的...阅读全文

博文 2020-02-29 22:32:39 xxfaxy

每天一点Go语言——Go语言语法基础及基本数据类型

每天一点Go语言——Go语言语法基础及基本数据类型 一、Go语言基础语法 ​ 上篇Go语言讲解中谈到了有关Go语言的基本组成结构,该小节就来讲述有关go语言的基础语法。Go语言程序由多个标记组成,如:关键字、标识符、常量、符号、字符串。 ​ 行分割符——一行表示一个语句结束,无需写“;”。当然,你可以将多条语句写在一行,并且使用“;”号区分,但是不推荐这样写开发代码。 ​ 注释在本文就不多说了。 标识符 ​ 如果说变量是shell入门的第一道关卡,那么可以说,标识符就是开发语言的第一道门槛。 ​ 标识符,从官方角度解释:用于命名变量、类型等程序实体。一个标识符具备的特点:实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母huo下划线而不能...阅读全文

博文 2020-04-03 14:33:23 wx5d8a17c45cb5b

11.函数

Go语言基础之函数 Golang 函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。 函数 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用,分隔。 函数体:实现指定功能的代码块。 我们先来定义一个求两个数之和的函数: ...阅读全文

博文 2020-04-08 07:32:51 雪上霜

Golang基础(六) | 接口

Interface类型 简单的说,interface是一组method签名的组合,我们通过interface来定义对象的一组行为。interface类型定义了一组方法,如果某个对象实现了某个接口的所有方法,则此对象就实现了此接口。详细的语法参考下面这个例子。 type Human struct { name string age int phone string } type Student struct { Human //匿名字段Human school string loan float32 } type Employee struct { Human //匿名字段Human company string money float32 } //Human对象实现Sayhi方法 func ...阅读全文

博文 2020-03-24 22:32:49 youzhihua

Go的条件语句「遇到问题该怎么办?先假设、后执行」

IF 条件语句 package main import "fmt" func main() { var A, B int = 520, 1314 if A > B { fmt.Println("A > B") } if A < B { fmt.Println("B < A") } fmt.Println("程序到此运行结束......") } /* 输出: B < A 程序到此运行结束...... */ 复制代码上面我们声明两个 int 变量 A = 520 和 B = 1314 第一个 IF 语句后面跟着的是 A > B,这个结果得出 False,在这里 A 是小于B的,所以括号里的内容不执行 第二个 IF 语句后面跟着的是 A < B,这个结果得出 True,所以执行 IF 括号中的内容...阅读全文

博文 2020-03-30 16:34:22 陈九礼

每天一点Go语言——变量、常量、运算符解析

每天一点Go语言——变量、常量、运算符解析 前言 ​ 前面简单说过有关Go语言的基础语法及其数据类型,大致上了解了Go语言程序的组成,而本文将讲述近乎所有编程语言都涉及的变量、常量以及运算符相关内容。 一、变量 何为变量? ​ 对该专业名词解释:计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go语言中的变量由字母、数字、下划线组成,首字母不可以为数字。耳熟能详了哈~ ​ 笔者的理解:我编写程序的时候需要使用一个值,并且我一直想要重复使用,而且有时候这个值会发生变化等等,所以我需要声明一个变量来被这个值赋之。 怎么声明变量? 变量声明一般格式: var 变量名 变量类型 var:变量声明关键字,表示声明变量 其次是变量的名字,最后是变量的类型(如int) 当然也有其他的...阅读全文

博文 2020-04-04 15:33:12 wx5d8a17c45cb5b

Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]

Go是一门简单有趣的语言,但与其他语言类似,它会有一些技巧。。。这些技巧的绝大部分并不是Go的缺陷造成的。如果你以前使用的是其他语言,那么这其中的有些错误就是很自然的陷阱。其它的是由错误的假设和缺少细节造成的。 如果你花时间学习这门语言,阅读官方说明、wiki、邮件列表讨论、大量的优秀博文和Rob Pike的展示,以及源代码,这些技巧中的绝大多数都是显而易见的。尽管不是每个人都是以这种方式开始学习的,但也没关系。如果你是Go语言新人,那么这里的信息将会节约你大量的调试代码的时间。 目录 初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shadowing...阅读全文

博文 2020-05-19 10:36:25 开发者阿俊

go 入门教程变量

变量定义要求 :Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字 在描述变量定义之前,先描述下go 语言的结构 package main import "fmt" import "math" func main() { // 定义单一变量 var age =28 fmt.Println("my age is ",age) } 输出:my age is 28 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注...阅读全文

博文 2020-01-03 12:33:13 水滴石川1

第三章 九析带你轻松完爆 go - 变量声明

1 前言 go 语言跟很多编译型语言一样,在使用变量前首先需要声明。声明方式有两种:单行声明和批量声明,声明关键字为 var,且如果声明局部变量而不使用则会编译报错。 同时需要注意的是,go 语言语句并没有分号“;”做结尾,并且单行声明语法如下:var var_name var_type 例如:var name string 批量声明语法如下:var ( name string age int gender string)2 代码样例 如下是 go 语言使用过程中一个代码样例:package mainimport "fmt"func main() { var username string = "mark" var password string = "helloworld" var ( a...阅读全文

博文 2020-02-23 23:33:18 九析

learn go with tests 学习笔记(二) 数组与切片

知识点 先写测试! Go 有内置的计算测试 覆盖率的工具,它能帮助你发现没有被测试过的区域。我们不需要追求 100% 的测试覆盖率,它只是一个供你获取测试覆盖率的方式。只要你严格遵循 TDD 规范,那你的测试覆盖率就会很接近 100%。 运行: `go test -cover` 你会看到: PASS coverage: 100.0% of statements 数组 数组初始化: 数组的容量是我们在声明它时指定的固定值。我们可以通过两种方式初始化数组: [N]type{value1, value2, ..., valueN} e.g. numbers := [5]int{1, 2, 3, 4, 5} [...]type{value1, value2, ..., valueN} e.g. nu...阅读全文

博文 2020-05-28 21:32:46 硌手小石头

(二)Golang的变量

为什么需要变量: 变量是程序的基本组成单位不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如: func getVal(num1 int, num2 int) (int, int) {sum := num1 + mum2sub := num1 - num2return sum, sub} func main() {sum, sub := getVal(30, 30)fmt.Println("sum=", sum, "sub=", sub)sum2, _ := getVal(10, 30)fmt.Println("sum=", sum2)...阅读全文

博文 2019-08-16 00:33:55 运维路

centos7上安装Golang

go语言安装: 1、下载,解压go部署包 1-go安装包解压.png 2、配置环境变量 export GOHOME=/usr/local/go export GOROOT=$GOHOME export GOPATH=/opt/go/gopath export PATH=$PATH:$JAVA_HOME/bin:$GOHOME/bin:$GOROOT/bin:$GOPATH/bin 2-配置go环境变量.png 3、环境变量生效 source /etc/profile 4、查看版本 go version 5、在$GOPATH目录下,创建src目录 make -p /opt/go/gopath/sr...阅读全文

手把手golang教程——数组与切片

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用。 数组与切片 golang当中数组和C++中的定义类似,除了变量类型写在后面。 比如我们要声明一个长度为10的int型的数组,会写成这样: var a [10]int 复制代码 数组的长度定义了之后不能改变,这点和C++以及Java是一样的。但是在我们日常使用的过程当中,除非我们非常确定数组长度不会发生变化,否则我们一般不会使用数组,而是使用切片(slice)。 切片有些像是数组的引用,它的大小可以是动态的,因此更加灵活。所以在我们日常的使用当中,比数组应用更广。 切片的声明源于数组,和Python中的list切片类似,我们通过指定左右区间的范围来声...阅读全文

博文 2020-05-17 22:34:25 承志

Golang | 高级数据类型

一、数组 数组作为函数参数,传值的; 只有长度和类型相同,才是同一类型,才可以相互赋值; var arr = [10]int{1, 2, 3}//声明长度才是数组,没声明长度的是切片 //切片可以append,数组不可以 //[]int 和 [10]int是不能相互赋值的。 复制代码二、切片 切片是引用类型, 什么是引用类型? "引用类型" 有两个特征:1、多个变量引用一块内存数据,不创建变量的副本,2、修改任意变量的数据,其它变量可见。 1、slice内存结构 type SliceHeader struct { Data uintptr Len int Cap int } //在64位架构的机器上,一个切片需要24字节的内存:指针字段需要8字节,长度和容量字段分别需要8字节。 //可以看出...阅读全文

博文 2020-04-06 00:34:22 _Liu_

9. Go 语言流程控制:switch-case

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 上一篇讲了 if -else 条件语句,今天先来讲讲 switch - c...阅读全文

博文 2020-05-01 18:32:40 Python编程时光

golang

go变量 // 变量可以以字母,数字,下划线组成,但是只能以数字或下划线开头 var varibale type = value var varuable = value // 根据值类型自动推断类型 var variable_1 type variable_1 = value // 1. 已经声明的变量不能使用以下方式赋值。:= 左侧的变量不应该时已经被声明过的。 // 2. 同时不带声明格式的只能在函数体中出现。 // 3. 使用:= 赋值的变量不能再次使用:=赋值。否则 提示编译错误:no new variables on left side of := // 4.go中如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误。a declared and not us...阅读全文

博文 2019-03-27 20:35:35 yuerumylove

Golang筑基 —— 语言结构、语法篇

Goalng结构 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 下面以代码示例说明: package main import "fmt" func main(){ //声明变量a var a string //给变量a赋值 a = "hello world!" //输出a fmt.Println(a) } package :包名,Golang中所有的文件都要有package,用于标记文件的内容属于哪个包;包分为两类main包和非main包,一个程序只能有一个main包。包之间不能交叉引用,类似于c/c++不能交叉引用.h文件。 import :引用的包,可以为自定义的包,也可以是系统包,fmt就是系统包,实现输出的功能 main:主函数,只有mai...阅读全文

博文 2020-01-07 19:32:43 技术修仙

3.变量和常量

Go语言基础之变量和常量 | Golang 变量和常量是编程中必不可少的部分,也是很好理解的一部分。 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。 Go语言中有25个关键字: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range ...阅读全文

博文 2020-04-04 09:32:48 雪上霜

12. Go 语言流程控制:defer 延迟语句

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天是最后一篇讲控制流程了,内容是 defer 延迟语句,这个在其他编程语...阅读全文

博文 2020-05-07 09:32:42 Python编程时光

Go 语言学习笔记 -第3章 基本数据类型

Go 语言学习笔记 -第3章 [toc] 基本数据类型 数值型整数类型 int, int8(1字节), int16(2字节), int32(3字节), int64(4字节); int8范围: -2的七次方 到2的七次方 - 1xxxxxxxxxx uint, uint8, uint16, uint32, unit64, byte uint8范围:0 到2的8次方-1xxxx以此类推 rune ~ 等价int32, 表示一个unicode byte 0~255 浮点类型 float32, float64 字符型:没有专门的字符型,使用byte来保存单个字母字符 布尔型: bool 字符串:string 派生、复杂数据类型 指针数组结构体管道函数切片接口map 备注: 1、查看某个变量的数据类型...阅读全文

博文 2020-01-09 15:32:41 Mark110

编程语言的一些基础概念(三):面向对象

在前面两篇中,主要讲了函数式编程语言的一些基础概念。这篇是 Coursera Programming Languages, Part C 的总结,通过 Ruby 介绍面向对象编程里的一些概念。了解这些概念能让你在上手任何一门新的面向对象语言时,都更加得心应手。 虽然用的是 Ruby,但是不会涉及很深的 Ruby,即使不懂 Ruby,读下来应该没问题。对于已经了解面向对象编程的朋友,可以考虑直接跳到子类和继承那部分,或许你会有一些新的启发。 面向对象编程 & Ruby 面向对象编程(Object Oriented Programming)简称 OOP,像 Java,C++ 等语言的主要编程模式都是面向对象的。OOP 主要是通过 对象(Object) 来抽象表示,比如说平面上的一个点,可以抽象表...阅读全文

博文 2019-07-01 00:32:42 闭眼卖布

0基础自学linux运维-1.2-centos Go安装

根据go安装文档:https://golang.google.cn/doc/install#tarball 进行改写的 mkdir /tools cd /tools #1.卸载之前的golangyum remove golang#2.下载 https://golang.org/dl/ wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz ll /usr/local/go/ #3.设置环境变量(方法二,这里用此方法) echo 'export PATH=$PATH:/usr/local/go/bin' >>/etc/profile tail...阅读全文

博文 2019-07-01 20:32:38 hualinux

通俗易懂:说说 Python 里的线程安全、原子操作

首发于微信公众号:Python编程时光 在线博客地址:python.iswbm.com/en/latest/c… 在并发编程时,如果多个线程访问同一资源,我们需要保证访问的时候不会产生冲突,数据修改不会发生错误,这就是我们常说的 线程安全 。 那什么情况下,访问数据时是安全的?什么情况下,访问数据是不安全的?如何知道你的代码是否线程安全?要如何访问数据才能保证数据的安全? 本篇文章会一一回答你的问题。 1. 线程不安全是怎样的? 要搞清楚什么是线程安全,就要先了解线程不安全是什么样的。 比如下面这段代码,开启两个线程,对全局变量 number 各自增 10万次,每次自增 1。 from threading import Thread, Lock number = 0 def target()...阅读全文

博文 2020-05-14 19:34:39 王一白

Go学习笔记-面向对象struct成员变量

结构体struct可以用来描述一组数据值,这组值的本质即可以是原始的,也可以是非原始的。是用户自定义的类型,它代表若干字段的集合,可以用于描述一个实体对象,类似java,php中的class,是golang面向对象编程的基础类型。 今天我们先来看看golang中的成员变量的实现。 基本的属性(成员变量) type Teacher struct { Name string age int Sex string } func Create() Teacher { cang := Teacher{Name:"teacher cang",age:20,Sex:"woman"} return cang } 对于在上面结构体teacher其实我们可以把它看成一个class而Name,Sex是可以被外部(...阅读全文

博文 2019-12-29 22:32:43 旧梦发癫

12. Go 语言流程控制:defer 延迟语句

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天是最后一篇讲控制流程了,内容是 defer 延迟语句,这个在其他编程语言里好像没有...阅读全文

博文 2020-05-07 11:36:18 王一白

golang结构体

定义 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体的定义 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下: type struct_variable_type struct { member definition member definition ... member definition } 结构体声明格式: variable_name := structure_variable_type {value1, value2...valuen} 或 variable_name := structure_variable_type { key1: v...阅读全文

博文 2020-01-01 02:32:54 程序小白菜

第四章 九析带你轻松完爆 go - 常量使用

1 单行声明 常量单行声明使用的语法如下。常量声明的位置可以是全局(所有函数外部)、局部(函数内部)。// PI is for math caculateconst PI = 3.142 批量声明 批量声明的方法跟变量声明类似,语法如下:const ( MON = 1 TUD = 2 WEN = 3 )3 iota 使用 iota 是常量的初始值定义符。默认值是 0。但是如果在批量常量定义的时候,出现在第几行,值等于“行号-1”。3.1 依次递增 代码如下:const ( t1 = iota t2 t3) 输出结果:0123.2 嵌入匿名常量 匿名常量用 _ 表示,代码如下:const ( t1 = iota t2 _ t3) 输出结果:0133.3 批量声明中多次使用 代码如下:const...阅读全文

博文 2020-02-23 22:33:15 九析

string相关函数

len():内建函数,查找字符串长度。 如果字符串中有中文,需要将其转换为[]rune类型: r := []rune(str) for i:=0;i < len(r);i++{ fmt. Println(r[i]) } 将字符串转整数:v,ok := strconv.Atoi("2") 将整数转字符串:v,ok := strconv.Itoa(2) 将字符串转成[]byte: v := []byte("dd") 将数字转换为n进制为,返回字符串: v := strconv.FormatInt(123,2) 查找子串,返回bool类型:b := strings.Contains("abc","b") 查找子串的个数,返回整数类型:i := strings.Count("ehfos","e") ...阅读全文

博文 2020-05-14 21:33:04 雪上霜

学习Go-第一天-安装

下载Go语言开发包 大家可以在Go语言官网(https://golang.google.cn/dl/)下载 Windows 系统下的Go语言开发包,如下图所示。 Go语言安装包下载页面 这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统的话,则需要下载 32 位的开发包,在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示。 其他版本的Go语言安装包 注意:下载 Windows 版本的Go语言开发包时尽量选择 MSI 格式,因为它可以直接安装到系统,不需要额外的操作。 安装Go语言开发包 双击我们下载好的Go语言开发包即可启动安装程序,如下图所示,这是Go语言的用户许可协议,无需管它,直接勾选“I accept ...”然后点击“Next”即可。 许可协议 ...阅读全文

博文 2020-04-26 13:33:09 小刺挠儿

Golang 学习笔记:程序结构

Go语言的程序元素 Go语言包含了五种程序符号,分别是标识符(identifier)、关键字(keyword)、运算符(operator)、分隔符(delimiter)与字面量(literal)。这五种程序元素组合成各种表达式和语句。 标识符标识符是用于标识变量、函数或任何用户自定义项目的名称(程序实体) 标识符可分为两类,一类是用户定义的标识符,作为程序实体存在;另一类是预定义标识符,它们在Go语言中的源代码被声明(如数据类型)。还有一个特殊的标识符,叫空标识符,记作 "_",一般用在变量声明与包的导入中。例如,在Go语言程序中,若存在一个没有使用的变量a,那么编译时就会报错,因为Go语言要求存在的程序实体必须被使用,这时就可以使用这样一句 _=a 的代码,编译器就会认为已经使用了变量a(...阅读全文

博文 2020-06-03 13:32:41 sunlingbot

[Go - Basic] 基本变量类型转换

数字转字符串 import "strconv" int -> string strconv.Itoa(i int) string int64 -> string strconv.FormatInt(i int64, base int) string base = 10 字符串转数字 import "strconv" string -> int strconv.Atoi(s string) (int, error) string -> int64 strconv.ParseInt(s string, base int, bitSize int) (i int64, err error) base = 10 bitSize = 6...阅读全文

开发环境-windows

一、下载 golang ,下载后点击安装 国内下载地址 https://studygolang.com/dl 二、配置环境变量 GOPATH : go的工作目录,可以自定义,在该目录下一般需要创建3个文件夹,也可以只创建src文件夹 bin : go编译后的可执行的二进制文件 pkg:go编译生成的中间文件 src : go资源文件,存放第三方库和项目代码 注: 使用 go get 下载第三方包时需要进入src目录下再执行 go get 命令 GOROOT : go的安装目录,eg: D:\go GOBIN : go安装目录下的 bin 目...阅读全文

博文 2020-06-08 01:33:18 hellocassiel

Golang 基础(二)

常量常量使用关键字 const 定义,用于存储不会改变的变量。无法在程序运行过程中修改它的值。存储在常量中的数据只可以是布尔型、数字型(整数型,浮点型和复数)和字符串型。例如: 格式:const identifier [type] = value const Pi = 3.141592658 const a = 3 Go语言中,可以省略类型说明符 type ,Go的编译器可以根据变量的值来推断它的类型,例如: const a string = "abc" // 显式类型定义 const a := "abc" // 隐式类型定义 另外,未定义类型的常量会在必要时候根据上下文来获得相关类型,例如: var n int f(n + 5) // 无类型的数字型常量"5" 它的类型再这会变成int 常...阅读全文

learn go with tests 学习笔记(三) 指针和错误

知识点 接收者 type Circle struct { Radius float64 } func (c Circle) Area() float64 { return 0 } 声明方法的语法跟函数差不多,因为他们本身就很相似。唯一的不同是方法接收者的语法 func(receiverName ReceiverType) MethodName(args) 当方法被这种类型的变量调用时,数据的引用通过变量 receiverName 获得。在其他许多编程语言中这些被隐藏起来并且通过 this 来获得接收者。 把类型的第一个字母作为接收者变量是 Go 语言的一个惯例。 r Rectangle 断言优于逻辑 当测试用例不是一系列操作,而是事实的断言时,测试才清晰明了。 列表测试驱动 声明结构体以创建...阅读全文

博文 2020-06-02 17:32:51 硌手小石头

5. Go语言中的数组与切片

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 系列导读 1. 一文搞定Go语言开发环境的搭建 2. Go 语言中五种变量创建的方法 3. Go语言中的整型与浮点型 4. Go语言中byte、rune与字符串区别? 1.7 1. 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。 声明数组,并给该数组里的每个元素赋值(索引值的最小有效值和其他大多数语言一样是 0,不是1) // [3] 里的3 表示该数组的元素个数 var arr [3]int arr[0] = 1 ar...阅读全文

博文 2020-04-01 11:35:00 王一白

MAC环境下安装并配置golang开发环境

一、安装安装brew install go验证go version二、配置GOPATH1. 查看环境变量go env2. 配置环境变量cd ~ls -all查看是否有.bash_profile文件,如果没有,则vim创建。输入如下export GOPATH=/Users/zhangkaizhong/goexport GOBIN=$GOPATH/binexport PATH=$PATH:$GOBIN使立即生效source ~/.bash_profile三、说明GOROOT:安装目录(go语言安装目录)。GOPATH:工程目录(自己工程项目目录)。GOBIN:可执行文件目录。PATH:将go可执行文件加入PATH中,使GO命令与我们编写的GO应用可以全局调用。GOPATH包含三个目录:bin、p...阅读全文

博文 2020-05-20 16:53:41 zhangkaizhong

【Golog】包

正文 package main import ( "fmt" "math/rand" ) import "math/cmplx" func main() { fmt.Printf("Now you have %g problems.\n", math.Sqrt(7)) } 这里这个头部有的这个package main有点像Java一样,这里的主函数入口func main()暂时没看到类型和返回值。 但是按照官网import支持两种方式一个是小括号,还有就是支持像python那样的一个一个import。感觉用小括号更好看吧。引入规则也是一样的可以引入包下的某部分如:math/rand。暂时不清楚能不能像c++一样指定自己在某个文件夹下的包。 可以看到这里的输出是类似c的那种输出形式。不知道有没...阅读全文

博文 2020-05-05 17:32:43 石渊友

Golang interface

1_CdjOgfolLt_GNJYBzI-1QQ.jpeg 接口概念 接口 即一组方法定义的集合,定义了对象的一组行为,由具体的类型实例实现具体的方法。换句话说,一个接口就是定义(规范或约束),而方法就是实现,接口的作用应该是将定义与实现分离,降低耦合度。习惯用“er”结尾来命名,例如“Reader”。接口与对象的关系是多对多,即一个对象可以实现多个接口,一个接口也可以被多个对象实现。 ​接口(interface) 是Go语言整个类型系统的基石,其他语言的接口是不同组件之间的契约的存在,对契约的实现是强制性的,必须显式声明实现了该接口,这类接口称之为“侵入式接口”。而Go语言的接口是隐式存在,只要实现了该接口的所有函数则代表已经实现了该接口,并不需要显式的接口声明。 接口的作用 ​接口是实现...阅读全文

博文 2020-04-09 18:32:49 frederick_hou

Go语言常量与变量初识

标识符和关键字 标识符 标识符只能以字母和_组成,并且只能以字母和_开头。 关键字 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 变量 变量声明 变量需要先声明,再使用。其语法如下: var name string 其数据类型有: string,字符串 int,整型 bool,布尔型 上面这种是一个变量一个变量的声明,go也有批量声明方式: var ( name string age int isBoy boo...阅读全文

博文 2020-03-16 00:33:13 Uncle_Joker

数据结构和算法(Golang实现)(19)排序算法-冒泡排序

冒泡排序 冒泡排序是大多数人学的第一种排序算法,在面试中,也是问的最多的一种,有时候还要求手写排序代码,因为比较简单。 冒泡排序属于交换类的排序算法。 一、算法介绍 现在有一堆乱序的数,比如:5 9 1 6 8 14 6 49 25 4 6 3。 第一轮迭代:从第一个数开始,依次比较相邻的两个数,如果前面一个数比后面一个数大,那么交换位置,直到处理到最后一个数,最后的这个数是最大的。 第二轮迭代:因为最后一个数已经是最大了,现在重复第一轮迭代的操作,但是只处理到倒数第二个数。 第三轮迭代:因为最后一个数已经是最大了,最后第二个数是次大的,现在重复第一轮迭代的操作,但是只处理到倒数第三个数。 第N轮迭代:.... 经过交换,最后的结果为:1 3 4 5 6 6 6 8 9 14 25 49,我...阅读全文

博文 2020-04-07 16:32:36 陈星星

通俗易懂:说说 Python 里的线程安全、原子操作

首发于微信公众号:Python编程时光在线博客地址:http://python.iswbm.com/en/la... 在并发编程时,如果多个线程访问同一资源,我们需要保证访问的时候不会产生冲突,数据修改不会发生错误,这就是我们常说的 线程安全 。 那什么情况下,访问数据时是安全的?什么情况下,访问数据是不安全的?如何知道你的代码是否线程安全?要如何访问数据才能保证数据的安全? 本篇文章会一一回答你的问题。 1. 线程不安全是怎样的? 要搞清楚什么是线程安全,就要先了解线程不安全是什么样的。 比如下面这段代码,开启两个线程,对全局变量 number 各自增 10万次,每次自增 1。 from threading import Thread, Lock number = 0 def target...阅读全文

博文 2020-05-14 18:33:13 Python编程时光

23. 一篇文章 说清楚 Go语言里的函数

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 关于函数 函数是基于功能或 逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数),有助于提高代码可读性和可维护性。 在 Go 语言中,函数可以分为两种: 带有名字的普通函数 没有名字的匿名函数 由于 Go语言是编译型语言,所以函数编写的顺序是无关紧要...阅读全文

博文 2020-05-31 13:34:30 王一白

(二) Golang变量(1) 介绍和注意事项

1. 变量的介绍 1.1 变量的概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名可以访问到变量(值)。 1.2 变量的使用步骤 声明变量(也叫:定义变量) 非变量赋值 使用变量 image.png 输出: image.png 2. 变量使用注意事项 1) 变量表示内存中的一个存储区域 2) 该区域有自己的名称(变量名)和类型(数据类型) image.png 3) Golang 变量使用的三种方式 (1) 第一种:指定变量类型,声明后若不赋值,使用默认值 func main() { //int 默认值为0 var i int fmt.Println("i=", i) } 输出 i= 0 (2) 第二种:根据值自...阅读全文

博文 2020-05-19 10:32:53 21号新秀_邓肯

如何在JavaScript中转换数据类型?

在JavaScript中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给类型的值以及可以对其执行的操作。虽然由于类型强制,JavaScript会自动转换许多值,但为了达到预期的结果,通常最好在类型之间手动转换值。那么如何在JavaScript中转换数据类型?下面本篇文章就来给大家介绍一下,希望对大家有所帮助。 原文地址:如何在JavaScript中转换数据类型?JavaScript 变量可以转换为新变量或其他数据类型,分为两种情况:● 隐性转换:通过 JavaScript 自身自动转换● 显性转换:通过使用 JavaScript 函数进行转换隐性转换作为一种编程语言,javascript对意外值非常宽容。因此,JavaScript将尝试转换意外的值,而不是直接拒绝它们。这种隐性转换...阅读全文

博文 2020-03-25 23:32:43 yanghs

Go语言基础 - 变量与常量

一、标识符 标识符是程序员定义的具有特定含义名词,如常量名、变量名和函数名等等 Go语言的标识符组成成分:字母、数字和下划线_,并且只能以字母和_开头,如ab3,_ab3 二、关键字 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 以及37个保留字: Constants: true false iota nil Types: int int8 int16 int32 int64 uint uint8...阅读全文

博文 2020-04-07 15:32:42 不留烦