go语言

go语言文件操作

こ雲淡風輕ζ 提交于 2019-12-06 13:07:50
原文链接: https://www.cnblogs.com/suoning/p/7225096.html 文件读取 os.File 封装了文件相关操作 os.File Pkg Doc 读写参数 文件打开模式: const ( O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件 O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件 O_RDWR int = syscall.O_RDWR // 读写模式打开文件 O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部 O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件 O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必须不存在 O_SYNC int = syscall.O_SYNC // 打开文件用于同步I/O O_TRUNC int = syscall.O_TRUNC // 如果可能,打开时清空文件 ) 权限控制: r ——> 004 w ——> 002 x ——> 001 读取栗子 os.Open || os.OpenFile package main import ( "bufio" "fmt" "os" ) func main(

Go语言基础一

时光怂恿深爱的人放手 提交于 2019-12-06 12:49:46
Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分。 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和 _ (下划线)组成,并且只能以字母和 _ 开头。 举几个例子: abc , _ , _123 , a123 。 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。 Go语言中有25个关键字: 1 break default func interface select 2 case defer go map struct 3 chan else goto package switch 4 const fallthrough if range type 5 continue for import return var Go语言中还有37个保留字。 1 Constants: true false iota nil 2 3 Types: int int8 int16 int32 int64 4 uint uint8 uint16 uint32 uint64 uintptr 5 float32 float64 complex128 complex64 6 bool byte rune string error 7 8

GO语言--入坑第一步

廉价感情. 提交于 2019-12-06 12:48:48
第一个Go程序 Hello World 现在我们来创建第一个Go项目—— hello 。在我们的 GOPATH 下的src目录中创建hello目录。 在该目录中创建一个 main.go 文件: 1 package main // 声明 main 包,表明当前是一个可执行程序 2 3 import "fmt" // 导入内置 fmt 包 4 5 func main(){ // main函数,是程序执行的入口 6 fmt.Println("Hello World!") // 在终端打印 Hello World! 7 } go build go build 表示将源代码编译成可执行文件。 在hello目录下执行: 1 go build 或者在其他目录执行以下命令: 1 go build hello go编译器会去 GOPATH 的src目录下查找你要编译的 hello 项目 编译得到的可执行文件会保存在执行编译命令的当前目录下,如果是windows平台会在当前目录下找到 hello.exe 可执行文件。 可在终端直接执行该 hello.exe 文件: 1 d:\code\go\src\hello>hello.exe 2 Hello World! 归类 : GO语言 来源: https://www.cnblogs.com/lz1996/p/11984851.html

《Go语言实战》读书笔记

不问归期 提交于 2019-12-06 12:19:31
中文版只有240页,如果读者有其他编程语言的基础,那这是很好的一本入门书籍。 第1章:关于 Go 语言的介绍 Go 语言是现代的、快速的,带有一个强大的标准库。 Go 语言内置对并发的支持。 Go 语言使用接口作为代码复用的基础模块。 第2章:快速开始一个 Go 程序 如果需要声明初始值为零值的变量,应该使用 var 关键字声明变量;如果提供确切的非零值初始化变量或者使用函数返回值创建变量,应该使用简化变量声明运算符。 当代码导入了一个包时,程序可以直接访问这个包中任意一个公开的标识符。这些标识符以大写字母开头。以小写字母开头的标识符是不公开的,不能被其他包中的代码直接访问。 在 Go 语言中,所有变量都被初始化为其零值。对于数值类型,零值是 0;对于字符串类型,零值是空字符串;对于布尔类型,零值是 false;对于指针,零值是 nil。对于引用类型来说,所引用的底层数据结构会被初始化为对应的零值。 不仅仅是Go语言,很多语言都允许一个函数返回多个值。一般会像RetrieveFeeds函数这样声明一个函数返回一个值和一个错误值。如果发生了错误,永远不要使用该函数返回的另一个值。这时必须忽略另一个值,否则程序会产生更多的错误,甚至崩溃。 根据经验,如果需要声明初始值为零值的变量,应该使用 var 关键字声明变量;如果提供确切的非零值初始化变量或者使用函数返回值创建变量

go 反射

亡梦爱人 提交于 2019-12-06 11:16:41
转载自: https://www.liwenzhou.com/posts/Go/13_reflect/ 本文介绍了Go语言反射的意义和基本使用。 变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 反射介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。 Go程序在运行期使用reflect包访问程序的反射信息。 在上一篇博客中我们介绍了空接口。 空接口可以存储任意类型的变量,那我们如何知道这个空接口保存的数据是什么呢? 反射就是在运行时动态的获取一个变量的类型信息和值信息。 reflect包 在Go语言的反射机制中,任何接口值都由是 一个具体类型 和 具体类型的值 两部分组成的(我们在上一篇接口的博客中有介绍相关概念)。 在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由 reflect.Type 和 reflect.Value 两部分组成,并且reflect包提供了

一起探讨Go 语言为什么能成功?

℡╲_俬逩灬. 提交于 2019-12-06 10:55:41
导读 两位创造者Rob Pike和Robert Griesemer一起探讨了Go成功的原因。 常言道,历史不会重演,但总会惊人的相似。 如果您想创建一种编程语言,多向那些有经验的人士学习,他们有很多可取之处。在《Go Time》第100期节目中,两位Go语言的创造者Rob Pike和Robert Griesemer一起探讨了他们的经历。 以下是他们认为取得成功的5大原因。 正式的语言规范 在讲述这个项目的起源时,Rob说:“我们经过六个多月的头脑风暴和思想成形之后,我们做的第一件重要的事情,就是花了几个星期写了一份正式的语言规范,我认为这是项目成功的关键部分。” 该规范引起了其他工程师的兴趣,比如Ian Lance Taylor。 还有最重要的事情之一是Ian Taylor看到了规范,并决定为它编写一个编译器。有一天他走进我们的办公室说:“顺便说一下,我为你们的语言做了一个编译器。” 这是一个多么神奇的时刻。当然,他后来成为了团队的一员,现在他还在为Go工作。 杀手锏App Rob说当时并没有重点考虑为什么要引入Docker 的,大概是为了使Go语言对系统程序员有吸引力? 是的,Docker现在是我们的杀手锏App,因为它是用Go编写的,运行良好,它成为了现在所谓的云计算的核心……我们过去只称它为系统编程或服务器。事实上,只要有一项重要的技术是用Go语言写的,这就证明了它的用武之地

Go 语言基础语法-Go

偶尔善良 提交于 2019-12-06 09:53:33
Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成: fmt.Println("Hello, World!") 6 个标记是(每行一个): 1. fmt 2. . 3. Println 4. ( 5. "Hello, World!" 6. ) 行分隔符 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。 如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。 以下为两个语句: fmt.Println("Hello, World!") fmt.Println("菜鸟教程:runoob.com") 注释 注释不会被编译,每一个包应该有相关注释。 单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。如: // 单行注释 /* Author by 菜鸟教程 我是多行注释 */ 标识符 标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。 以下是有效的标识符: mahesh kumar abc

Go语言基础之指针

此生再无相见时 提交于 2019-12-06 08:43:22
Go语言中的指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。 任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。 比如,“永远不要高估自己”这句话是我的座右铭,我想把它写入程序中,程序一启动这句话是要加载到内存(假设内存地址0x123456),我在程序中把这段话赋值给变量 A ,把内存地址赋值给变量 B 。这时候变量 B 就是一个指针变量。通过变量 A 和变量 B 都能找到我的座右铭。 Go语言中的指针不能进行偏移和运算,因此Go语言中的指针操作非常简单,我们只需要记住两个符号: & (取地址)和 * (根据地址取值)。 指针地址和指针类型 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go语言中使用 & 字符放在变量前面对变量进行“取地址”操作。 Go语言中的值类型(int、float、bool、string、array、struct)都有对应的指针类型,如: *int 、 *int64 、 *string 等。 取变量指针的语法如下: ptr := &v // v的类型为T 其中: v:代表被取地址的变量,类型为 T ptr:用于接收地址的变量,ptr的类型就为 *T ,称做T的指针类型。

Go语言基础之流程控制

僤鯓⒐⒋嵵緔 提交于 2019-12-06 07:02:48
流程控制 :是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。 Go语言中最常用的流程控制有 if 和 for ,而 switch 和 goto 主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。 if else(分支结构) if条件判断基本写法 Go语言中 if 条件判断的格式如下: if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else{ 分支3 } 当表达式1的结果为 true 时,执行分支1,否则判断表达式2,如果满足则执行分支2,都不满足时,则执行分支3。 if判断中的 else if 和 else 都是可选的,可以根据实际需要进行选择。 Go语言规定与 if 匹配的左括号 { 必须与 if和表达式 放在同一行, { 放在其他位置会触发编译错误。 同理,与 else 匹配的 { 也必须与 else 写在同一行, else 也必须与上一个 if 或 else if 右边的大括号在同一行。 举个例子: func main() { var age = 30 if age > 18 { // 如果age>18就执行这个{}中代码 fmt.Println("澳门线上吃屎") } else { fmt.Println("该去玩了") } if条件判断特殊写法 if条件判断还有一种特殊的写法,可以在 if