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

90%以上前端开发人员忽略的问题,确是很多大厂HR问到的题目

「阅读本文,可以了解到JS中是如何进行垃圾回收的,为什么需要垃圾回收,在这个基础上,作为开发者我们可以如何优化我们的应用」 一、垃圾回收 首先我们需要了解一下栈内存和堆内存的区别,栈内存一般是由操作系统去自动管理的,而下面我们要讨论的内存管理指的是堆内存,可以被人工管理,比如c/c++,但是人工的风险总是很大的,所以很多语言引入了自动堆内存管理GC机制,比如JVM、JavaScript、C#、Golang、OCaml和ruby。但是交给这个语言机制就真的万无一失了么,你错了,因为GC也是程序员创作的,那就会有BUG~ 垃圾回收(GC: Garbage Collecation):垃圾回收器在特定的时候以某种策略去找到程序中不再使用的变量,然后释放它所占用的内存 想必我们也会产生下面的疑问: 垃...阅读全文

博文 2020-09-17 21:32:40 前端技术控

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 硌手小石头

34. 图解 Go 语言:静态类型与动态类型

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 静态类型 所谓的静态类型(即 static type),就是变量声明的时候的类型。 var age int // int 是静态类型 var name string // string 也是静态类型 它是你在编码时,肉眼可见的类型。 2. 动态类型 所谓的 动态类型(即 co...阅读全文

博文 2020-06-15 08:32:39 Python编程时光

Golang基础语法:字符与字符串(三)--十安辰

Golang基础语法:字符与字符串(三) 字符 字符基本介绍 ​ Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。这点不同于c和c++使用char来存储。 ​ Golang 使用的是UTF-8的Unicode编码,可以很方便地表示汉字,如果有小伙伴学过python就知道,python源代码上面总是有一行 \# -*- coding: UTF-8 -*-代码,这行代码就是引入了中文编码,这样你在控制台打印中文字符的时候才不会报错,而Golang是21世纪的新语言,在开发之初就考虑到了这样的问题,开发者可以不用考虑编码问题,大胆地输出吧! ​ 字符串就是- -串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由...阅读全文

博文 2020-05-16 21:32:48 十安辰

golang切片

定义 slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案。 使用方式 切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。 切片的长度可以改变,因此,切片是一个可变的数组。 切片遍历方式和数组一样,可以用len()求长度。表示可用元素数量,读写操作不能超过该限制。 cap可以求出slice最大扩张容量,不能超出数组限制。0 <= len(slice) <= len(array),其中array是slice引用的数组。 切片的定义:var 变量名 []类型,比如 var str []string var arr []int。 如果 slice == nil,那么 len、cap 结果都等于 0。 创建切片方式 make创建 slice...阅读全文

博文 2020-09-25 01:32:47 追梦人在路上不断追寻

08-go数据类型内存结构-interface

### 1. 值接收者和指针接收者 - 实现了接收者是值类型的方法, ```自动生成```了接收者是指针类型的方法; - 实现了接收者是指针类型的方法,```不会自动生成```对应接收者是值类型的方法。 ### 2. iface 与 eface 都是两个成员,第二个成员都是接口存放的数据。不同的是第一个成员。 ``` eface._type ```接口保存的实体类型,没有包含任何接口方法。 ```iface.tab```是一个itab结构,itab.inter是一个interfacetype指针,描述接口类型,包括:类型、包名、方法列表。 ```iface.tab._type```定义实体类型。同```eface._type```。 ![abc](https://img-blog.csdni...阅读全文

博文 2020-10-07 10:52:21 ivenher

Golang——包

包package是源码(.go文件)的集合。 package 包名 注意: 一个文件夹下面只能有一个包,同样一个包的文件不能改在多个文件夹下。 包名和文件夹名可以不一样,包名不能包括-符号。 包名为main的包为应用程序的入口包,编译时不包含main包的源代码时不会得到可执行文件。 如果想在一个包中引用另一个包里的标识符(如变量、常量、类型、函数等),该标识符必须是对外可见的(public)。在Go语言中只需要将标识符的首字母大写就可以让标识符对外可见。 包的导入 import "包的路径" 注意: import导入语句通常放到文件开头包声明语句的下面。 导入的包名需要使用双引号包裹起来。 报名是从$GOPATH/src后开始计算的,使用/进行路径分隔。 import "包名1" impor...阅读全文

博文 2020-06-10 10:32:57 Cici冬雪

【go语言学习】反射reflect

一、认识反射 维基百科中的定义: 在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。 不同语言的反射模型不尽相同,有些语言还不支持反射。 Go 语言支持反射,它提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法,但是在编译时并不知道这些变量的具体类型。 1、为什么要用反射 需要反射的 2 个常见场景: (1)有时你需要编写一个函数,但是并不知道传给你的参数类型是什么,可能是没约定好;也可能是传入的类型很多,这些类型并不能统一表示。这时反射就会用的上了。 (2)有时候需要根据某些条件决定调用哪个函数,比如根据用户的输入来决定。这时就需要对函数和函数的参数进行...阅读全文

博文 2020-10-06 00:32:39 Every_dawn

go语言数组的细枝末节

1. 内部实现 在Go语言里,数组是一个长度固定的数据类型,用于存储一段具有相同的类型元素的连续块。存储的类型可以是内置类型,也可以是自定义类型。数组是一种非常有用给的数据结构,因为其占用的内存是连续分配的。由于内存连续,CPU能把正在使用的数据缓存更久的时间。而且内存连续很容易计算索引,可以快速访问数组里的任意数据。 在Go语言中,数组是一种类似于整形,浮点型,字符串的基本数据类型,区别于C++语言的是,Go语言的数组在函数传参时是值传递的,因此要想通过某个函数修改数组的值,就必须通过传入数组的指针来实现,实际上Go语言中的所有函数传参都是值传递。 2. 声明和初始化 数组 的类型名是 [n ]elemetType ,其中 n 是数组长度, elementType 是数组元素类型 。 数组...阅读全文

博文 2020-01-13 14:32:44 lioney

Linux下安装Go

前言 要验证一个东西,需要用到go语言环境,这里简单记录下。 下载 下载地址: https://golang.google.cn/dl/ 没加cn你会下载不了。 $ wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz 解压 $ tar zxf go1.14.2.linux-amd64.tar.gz 配置环境变量 $ vim .bash_profile export GOROOT=$HOME/3rd/go export PATH=$GOROOT/bin:$PATH 生效环境变量验证 $ . .bash_profile $ which go ~/3rd/go/bin/go 这里我们可以看到已经生效到我们部署的go环境。 PS:下班路...阅读全文

博文 2020-05-13 22:32:57 testerzhang

编写可读艺术的代码

前言 编写代码,实质是在梳理逻辑,为了完善整个逻辑流程,我们借用编程语言的变量、函数、流程控制、循环、注释、方法等串接起来,完善一套系统的逻辑。 为了完善这套逻辑,我们借助了许多工具:设计方法、架构设计、项目组织等。 意识到没有,代码的好坏一定程度上可以从逻辑层面评判。 符合逻辑,不一定是最优的代码 不符合逻辑,一定不是好的代码 逻辑的串接靠的是编程语言的变量、函数、流程控制、循环、注释等。 一、 规范 绝大多数的人,不会从零完整的完成一个复杂的项目,大多是团队共同合作,完成一个大的项目。 这个时候,假如你是中途参与进来。你在实现逻辑的时候,你是照着自己的逻辑来还是依照团队的风格来。 比如项目组织,命名等... 按照团队的命名风格来 1.1 编程语言的规范 每门编程语言,都存在一定的规范,比...阅读全文

博文 2020-06-28 16:33:13 Y_9d67

Go语言中基本数据类型初识

在Go语言中常用的基本数据类型有如下几种: 整型 浮点型 布尔类型 复数 字符串 整型 有符号 int8 int16 int32 int64 无符号 uint8 uint16 uint32 uint64 特殊整型 uint,32位操作系统就是uint32,64位操作系统就是uint64 int,32位操作系统就是int32,64位操作系统就是int64 uintptr,无符号整型,用于存放指针 注意:在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。 进制 // 程序入口 func main() { // age = "17" // fmt.Println("Hello World") // fmt.Print("isOK") ...阅读全文

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

Go 语言学习之流程控制

01 if...else... 标准使用在 Go 语言中,if...else... 语句的条件表达式必须是布尔类型,可以省略小括号,并且左大括号不能另起一行。通过代码,我们演示 if...else... 的标准使用方法。func main() { x := 1 if x >= 5 { fmt.Println("x >= 5") } else if x < 5 && x > 0 { fmt.Println("x < 5 && x > 0") } else { fmt.Println("x <= 0") } }02 if...else... 特殊使用if...else... 语句区别于其它语言,它在条件表达式中,支持初始化语句,可以定义局部变量(一个或多个)或执行初始化函数。其中,局部变量的有效...阅读全文

博文 2020-08-10 11:32:42 frank

Golang入门教程——函数、循环与分支

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Golang专题的第四篇,这一篇文章将会介绍golang当中的函数、循环以及选择判断的具体用法。 函数 在之前的文章当中其实我们已经接触过函数了,因为我们写的main函数本质上也是一个函数。只不过由于main函数没有返回值,也没有传参,所以省略了很多信息。 func main() { fmt.Println("Hello World") } 复制代码 下面,我们来看看一个完整的函数是怎样的,这是golang官网上的例子。 func add(x int, y int) int { return x + y } 复制代码 这是一个非常简单的a+b的函数,我想大家应该都能看懂。我们来重点关注一下函数的格式。首先是func关键字,我们...阅读全文

博文 2020-05-09 22:34:22 承志

31. 说说 Go 语言中的空接口

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 什么是空接口? 空接口是特殊形式的接口类型,普通的接口都有方法,而空接口没有定义任何方法口,也因此,我们可以说所有类型都至少实现了空接口。 type empty_iface interface { } 每一个接口都包含两个属性,一个是值,一个是类型。 而对于空接口来说,这两者...阅读全文

博文 2020-06-09 09:32:41 Python编程时光

Golang标准库——regexp

regexp regexp包实现了正则表达式搜索。 正则表达式采用RE2语法(除了\c、\C),和Perl、Python等语言的正则基本一致。 参见http://code.google.com/p/re2/wiki/Syntax。 Syntax 本包采用的正则表达式语法,默认采用perl标志。某些语法可以通过切换解析时的标志来关闭。 单字符: . 任意字符(标志s==true时还包括换行符) [xyz] 字符族 [^xyz] 反向字符族 \d Perl预定义字符族 \D 反向Perl预定义字符族 [:alpha:] ASCII字符族 [:^alpha:] 反向ASCII字符族 \pN Unicode字符族(单字符名),参见unicode包 \PN 反向Unicode字符族(单字符名) \p{...阅读全文

博文 2020-10-19 23:32:41 DevilRoshan

go modules 初体验

之前有知道dep,vendor,glide等go的包管理方案,但没怎么用起来,modules是官方推出,看势头在后面的版本中也会持续改进,值得尝试。 modules modules在go的1.11版本中加入,并在Go 1.13中对模块进行了重大改进和更改。 开启模块 1.13版本前请务必开启模块 export GO111MODULE=auto 初始化 在你的项目目录中执行: go mod init 13sai/game 会生成go.mod module 13sai/game go 1.12 然后你可以尽情编写你的项目代码,在你每次go get的时候,modules也会将你的安装的package加入go.mod module 13sai/game go 1.12 require github....阅读全文

golang面试题:reflect(反射包)如何获取字段tag​?为什么json包不能导出私有变量的tag?

问题 json包里使用的时候,会结构体里的字段边上加tag,有没有什么办法可以获取到这个tag的内容呢? 举例 tag信息可以通过反射(reflect包)内的方法获取,通过一个例子加深理解。 package main import ( "fmt" "reflect" ) type J struct { a string //小写无tag b string `json:"B"` //小写+tag C string //大写无tag D string `json:"DD" otherTag:"good"` //大写+tag } func printTag(stru interface{}) { t := reflect.TypeOf(stru).Elem() for i := 0; i < t....阅读全文

博文 2020-06-15 11:34:26 9號同学

Go语言库系列之flag

背景 终端(命令行)操作是程序员的必备技能,但是你知道怎么通过golang制作出如下命令吗? $ flag girl -h Usage of girl: -height int 身高 (default 140) $ flag girl --height 170 恭喜你获得了身高 170 的女朋友 极速上手 整个实现非常简单,只需要5个步骤 第一步,引库 import "flag" 第二步,定义变量 定义该变量的作用是存储命令行参数传来的值 var height int 第三步,配置命令信息 在main函数或init函数中加入 flag.IntVar(&height, "height", 140, "身高") 第一个参数是定义的变量引用 第二个参数:命令的名称 第三个参数:命令参数的默认值 第...阅读全文

博文 2020-04-02 00:32:44 平也

7. Go 语言数据类型:指针

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 0. 什么是指针 当我们定义一个变量 name var name string = "Go编程时光"复制代码 此时,name 是变量名,它只是编程语言中方便程序员编写和理解代码的一个标签。 当我们访问这个标签时,机算机会返回给我们它指向的内存地址里存储的值:Go编程时光。 出于某些需要,我们会...阅读全文

博文 2020-04-29 11:35:21 王一白

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语言——Go语言语法基础及基本数据类型

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

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

Go 语言学习之变量

01 命名规则Go 中命名规则是,名称以字母或下划线开头,后面可跟任意数量的字符、数字和下划线,字符区分大小写,名称本身没有长度限制,但是 Go 的编程风格倾向于使用短名称,特别是局部变量,Go 中有 25 个关键字,这些关键字不可用来命名。Go 语言 25 个关键字:breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitchconstfallthroughifrangetypecontinueforimportreturnvar02 声明变量声明变量的通用形式var name type = expression使用 var 关键字,后面跟变量的名称、类型和表达式。声明变量的省略形式var tota...阅读全文

博文 2020-07-31 15:32:42 frank

Go 语言环境安装

Go 语言环境安装 Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Window 安装包下载地址为(go语言环境配置安装包下载安装教程): https://golang.org/dl/ 各个系统对应的包名: Go 语言环境安装 UNIX/Linux/Mac OS X, 和 FreeBSD 安装 以下介绍了在UNIX/Linux/Mac OS X, 和 FreeBSD系统下使用源码安装方法: 1、下载源码包:go1.4.linux-amd64.tar.gz。 2、将下载的源码包解压至 /usr/local目录。 tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz 3、将 /usr/local/go/bi...阅读全文

Golang 基础(一)

文件名、关键字与标识符文件名:Go的源文件是以.go为后缀名,文件名可以支持下划线_作为分隔,但是不支持空格或者其他特殊字符标识符:有效的标识符必须以字符开头(可以使用任何UTF-8编码的字符或者下划线_开头) 有效的标识符:X56,group1,_23,i,өԑ12 无效的标识符:1ab,case,a+b 下划线 _ 作为特殊的标识符,被称为空白标识符,它可以向其他标识符用于变量声明或者赋值,任何赋值给它的值都会被抛弃 关键字或保留字,共有25个: package/import:导入关键字 inteface:接口定义的关键字 struct:定义抽象数据类型的关键字 type:声明自定义类型的关键字 func:定义函数和方法的关键字 var/const:变量和常量声明的关键字 break/c...阅读全文

博文 2020-03-01 15:32:46 lexder

Go语言之父详述切片与数组的不同

切片是Go 语言核心的数据结构,然而刚接触 Go 的程序员经常在切片的工作方式和行为表现上被绊倒。比如,明明说切片是引用类型但在函数内对其做的更改有时候却保留不下来,有时候却可以。究其原因是因为我们很多人用其他语言的思维来尝试猜测 Go 语言中切片的行为,切片这个内置类型在 Go 语言底层有其单独的类型定义,而不是我们通常理解的其他语言中数组的概念。 文章翻译自罗伯·派克发布在 Go Blog 中的文章,文中详述了切片是如何被设计出来的以及其与数组的关联和区别,以及内置append函数的实现细节。虽篇幅很长,还是建议认证读完,尤其是关于切片的设计和append函数实现的部分,理解了“切片头”后很多的切片行为就自然而然能够理解。 Rob·Pike2013 年 9 月 26 日原文地址:http...阅读全文

博文 2020-02-19 15:32:40 Kevin

30. 如何使用 GDB 调试 Go 程序?

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 做为新手,熟练掌握一个好的调试工具,对于我们学习语言或者排查问题的时候,非常有帮助。 你如果使用 VS Code 或者 Goland ,可以直接上手,我就不再写这方面的文章了。 其实相比有用户界面的 IDE 调试工具,我更喜欢简单直接的命令行调试,原因有三点: 速度快,个人感觉在 ...阅读全文

博文 2020-06-08 09:32:42 Python编程时光

详解 Go 中的不可变类型

Golang 中的不变性如何利用不变性来增强你的 Golang 应用程序的可读性和稳定性不变性的概念非常简单. 创建对象 (或结构体) 后, 将永远无法更改它. 这是一成不变的. 尽管这个概念看起来很简单, 但使用它或从中受益并不那么容易.正如计算机科学 (和生活) 中的大多数事物一样, 有许多种方法可以达到相同的结果, 就不变性而言, 两者没有什么不同. 您应该把它看做是工具包中的一个工具,并使用在适用的问题场景上. 关于不变性的一个非常好的用例是在您进行并发编程时. Golang 在设计时就考虑了并发性, 因此在 go中使用并发非常普遍. 无论您使用哪种范例都可以通过以下方法在 Golang 中使用一些不变性概念来使代码更具可读性和稳定性.仅导出结构体的功能, 而不导出其字段这与封装类似...阅读全文

博文 2020-09-08 17:58:04 MO_ON_e503

go笔记-类型转换

go 存在 4 种类型转换分别为:断言、强制、显式、隐式。通常说的类型转换是指断言,强制在日常不会使用到、显示是基本的类型转换、隐式使用到但是不会注意到。断言、强制、显式三类在 go 语法描述中均有说明,隐式是在日常使用过程中总结出来。1、断言通过判断变量是否可以转换成某一个类型(1)使用断言表达式文档地址var s = x.(T) 或 s, ok := x.(T),注意第一种断言失败会直接panic,开发中尽量使用第二种例: var x interface{} = 7 // x has dynamic type int and value 7 i, ok := x.(int) // i has type int and value 7 if ok { // 成功 } (2)switch文档...阅读全文

博文 2020-10-09 16:32:49 陈德华

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编程时光

Java 虚拟机基础(一) 类的加载机制

Java 虚拟机 (Java Virtual Machine ,JVM)学这东西有啥用? 装13啊!不然呢?面试么? 找打??? 一、啥是 JVM想当年,编程语言被两大家瓜分,一是编译语言,一是解释语言。编译语言就是 编写之后由编译器编译成系统可以识别的运行文件,这样就可以直接运行,特点就是运行快,但却受系统限制,因为在各个系统上的写法可能都不一样,所以跨平台能力差。典型的就是 c ,c++ ,当然还有现在的 golang。解释语言是由解释器充当系统的翻译,这样,无论你在哪个系统,只要这个翻译在,就能得到同样的效果。所以解释语言的特点就是 跨平台能力强,但运行速度慢。 典型就是 当年的 python 等。那 Java 呢? Java是取其二者之中间,称之为字节码语言,它有一个自己的虚拟机,代...阅读全文

博文 2020-04-28 03:32:55 童话喵

(二)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 运维路

go——字节

内容 1 byte/rune 2 bit基本操作 3 字节序 4 一个bit使用例子——bitmap 一 byte/rune 编码: 编码就是人类语言字符和存储中计算机中的字节的一种映射表,最开始是用ascii编码表就可以表示完所有的英文字符,但是没法表示其他语言字符,所以诞生了unicode、utf-8等不同的编码表;go中用byte和rune类型来代表ascii字符和unicode字符; byte和uint8是等价的,通常处理ascii字符,因为只用8位来存储,实际只可以存储256个字符,所以有了unicode、utf-8等编码来处理其他复杂字符 go中的rune是int32的一个别名,占用4个字节存储,一个rune就是一个unicode字符,当代码中要处理中文、日文等字符时,通常使用r...阅读全文

博文 2020-10-05 10:32:40 酷酷码农

001_Go windows 环境搭建

Go windows 环境搭建 1、下载安装Golang Go 官网下载地址:https://golang.org/dl/ Go 官方镜像站(推荐):https://golang.google.cn/dl/ 2、验证安装成功 go version go version go1.13.8 windows/amd64 3、查看 go 环境 go env set GO111MODULE=on set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\Flj\AppData\Local\go-build set GOENV=C:\Users\Flj\AppData\Roaming\go\env set GOEXE=.exe set GOFLAGS= set G...阅读全文

博文 2020-07-27 11:32:44 付少_Flj

Go基础变量和常量

Go语言变量和常量命名规则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 预定义名字,主要是对应内建的常量、类型和函数// 内建常量: true false iota nil // 内建类型: int int8 i...阅读全文

Linux的too many open files解析

Linux中如果一个进程打开文件或者socket连接过多,有没有及时处理和关闭掉文件或连接,当该进程打开文件的数量超过open files的数量时候,就会报too many open files的错误 Linux open files可以在进程级别限制 Linux 的open files 是在一个同一个进程里限制的,当然也有全局的限制(查看/proc/sys/fs/file-max文件),ulimit -a pid命令可以看到open files进程级别限制的大小。 如果当前open files配置的是1024,则这个进程最多只能打开1024个文件,/proc/PID/fd 目录下的打开文件描述符的数量不会超过1024, 使用 lsof -p PId | wc -l 来查看进程打开的文件数,...阅读全文

博文 2020-10-23 22:32:38 perfect6566

Go 语言闭包详解

文链接:Go 语言闭包详解 什么是闭包?闭包是由函数和与其相关的引用环境组合而成的实体。 下面就来通过几个例子来说明 Go 语言中的闭包以及由闭包引用产生的问题。 函数变量(函数值) 在说明闭包之前,先来了解一下什么是函数变量。 在 Go 语言中,函数被看作是第一类值,这意味着函数像变量一样,有类型、有值,其他普通变量能做的事它也可以。 func square(x int) { println(x * x) } 直接调用:square(1) 把函数当成变量一样赋值:s := square;接着可以调用这个函数变量:s(1)。注意:这里 square 后面没有圆括号,调用才有。 调用 nil 的函数变量会导致 panic。 函数变量的零值是 nil,这意味着它可以跟 nil 比较,但两个函数变...阅读全文

博文 2020-05-31 23:32:45 line

Golang函数的使用

函数 在GO语言中,函数的基本组成为func关键字,函数名,参数列表,返回值,函数体和返回语句。 1. 函数的定义 首先,我们通过一个最简单的加法函数来进行说明 package mymath import "errors" func Add(a int, b int) (ret int, err error) { if a < 0 || b < 0 { //假定函数只支持两个非负数相加 err = errors.New("Should be non-negative numbers") return } return a + b, nil //支持多返回值 } 上面的函数中,(ret int, err error)表示多返回值,error是Go中特有的错误处理包。 后面我们会单独介绍这个包。...阅读全文

博文 2020-10-23 18:32:37 ShawnLee_123

GO常量与变量

package main import ( "fmt" ) //单个变量(自行判断变量类型) var test1 = "content1" /*单个变量 先声明类型再赋值,此种方式函数中调用不了(会报错syntax error: non-declaration statement outside function body) 请再函数外设置 */ //var test2 string //test2 = "content2" //test3 : = "content3" //:=左侧的变量不应该是已经被声明过的,否则会导致编译错误 //单个变量 var test4 string = "content4" /*多个变量 此种方式函数中调用不了,请再函数外设置 */ //var test5, t...阅读全文

博文 2020-04-16 15:37:42 赛里

Golang筑基 ——条件/循环语句

在golang中添加语句有if else,switch,select 三种,循环语句只有for 如下 if语句 package main import "fmt" func main() { /* 局部变量定义 */ var a int = 100; /* 判断布尔表达式 */ if a < 20 { /* 如果条件为 true 则执行以下语句 */ fmt.Printf("a 小于 20\n" ); } else { /* 如果条件为 false 则执行以下语句 */ fmt.Printf("a 不小于 20\n" ); } fmt.Printf("a 的值为 : %d\n", a); } switch语句 package main import "fmt" func main() { /...阅读全文

博文 2020-04-13 21:32:47 技术修仙

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 九析

三言两语说清楚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

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

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

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

SystemUI-mk转bp

1. 基本概念介绍 自Android N开始,Google开始用Ninja来替代Makefile编译系统。编译时,会先把Android.mk通过kati转换成.ninja文件,然后使用ninja命令进行编译。 Android.bp是替代Android.mk的配置文件,在Android O默认开启相关支持。编译时,由Soong解析转换成.ninja文件。 Soong是为Android编译设计的工具,Blueprint和Soong都是由Golang写的项目,Blueprint解析文件的格式,而Soong解释内容的含义,bp即Blueprint的缩写。 与Android.mk不同的是,Android.bp是纯粹的配置文件,不包含分支、循环等流程控制,也不能做算数、逻辑运算,需使用Golang编写控...阅读全文

博文 2020-09-11 13:32:37 小马一枝刀

golang源码学习之sync.pool

源码目录 ///sync.pool.go (1.1.4.1) 前言 sync.pool对象池是个好东西,避免对象的反复创建和回收。对于一些需要频繁创建的对象我们可以使用它来避免内存的频繁申请、回收。但应避免用于连接池,因为sync.pool存储的对象仅存活在三次STW之间。 数据结构 //sync.pool.go type Pool struct { noCopy noCopy // 不可复制标准 local unsafe.Pointer // 指向poolLocal数组 localSize uintptr // poolLocal数组长度 victim unsafe.Pointer // 指向poolLocal数组 victimSize uintptr // poolLocal数组长度 N...阅读全文

博文 2020-04-06 21:32:56 ihornet

Go Modules 详解

文链接:Go Modules 详解 Go 1.11 和 Go 1.12 包含了初步的 Go Modules 支持,且计划在 2019 年 8 月发布的 Go 1.13 会在所有开发过程中默认使用 Go Modules。 Go Modules 是为了提升使用其他开发者代码,即添加依赖项(模块、包)时的体验,也是为了让代码的正确性、安全性得到保障。并且 Go Modules 可以使用 GOPROXY 环境变量来解决中国大陆无法使用 go get 的问题。 所以学习跟 Go Modules 有关的知识是很有必要的。 模式 Go Modules 在 Go 1.11 及 Go 1.12 中有三个模式,根据环境变量 GO111MODULE 定义: 默认模式(未设置该环境变量或 GO111MODULE=a...阅读全文

Golang哈希类型

Map类型 Go语言中,map无需引用任何库,Go语言自带map类型。 Map是一堆键值对的未排序集合。 1. 简单使用 package main import "fmt" type PersonInfo struct { ID string Name string } func main() { var personDB map[string]PersonInfo personDB = make(map[string]PersonInfo) personDB["12345"] = PersonInfo{ID: "12345", Name: "Tom"} personDB["11223"] = PersonInfo{ID: "11223", Name: "Jerry"} person, ok...阅读全文

博文 2020-10-21 17:32:40 ShawnLee_123

Golang——变量和常量

关键字(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个) append bool byte cap close complex complex64 complex128 uint16 copy false float32 float64 imag int int8 int16 uint32 int32 int64 iota len make new nil panic uint64 print println ...阅读全文

博文 2020-05-10 19:33:10 Cici冬雪