golang

换个语言学一下 Golang (2)——基础语法

独自空忆成欢 提交于 2020-04-06 20:36:39
Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。比如下面的hello world就是由 6 个标记组成: 行分隔符 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。 如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中并不鼓励这种做法。 注释 注释不会被编译,每一个包应该有相关注释。 单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。 标识符 标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。 字符串连接 Go 语言的字符串可以通过 + 实现: package main import "fmt" func main() { fmt.Println("Hello" + "World") } 以上实例输出结果为: HelloWorld 关键字 下面列举了 Go 代码中会使用到的 25 个关键字或保留字: break default func interface select case defer go map struct chan

换个语言学一下 Golang (9)——结构体和接口

a 夏天 提交于 2020-04-06 20:33:30
基本上到这里的时候,就是上了一个台阶了。Go的精华特点即将展开。 结构体定义 上面我们说过Go的指针和C的不同,结构体也是一样的。Go是一门删繁就简的语言,一切令人困惑的特性都必须去掉。 简单来讲,Go提供的 结构体 就是把 使用各种数据类型定义 的 不同变量组合起来 的 高级数据类型 。闲话不多说,看例子: type Rect struct { width float64 length float64 } 上面我们定义了一个矩形结构体,首先是关键是 type 表示要 定义一个新的数据类型了 ,然后是新的数据类型名称 Rect ,最后是 struct 关键字,表示这个高级数据类型是结构体类型。在上面的例子中,因为 width和length的数据类型相同 ,还可以写成如下格式: type Rect struct { width, length float64 } 好了,来用结构体干点啥吧,计算一下矩形面积。 package main import ( "fmt" ) type Rect struct { width, length float64 } func main() { var rect Rect rect.width = 100 rect.length = 200 fmt.Println(rect.width * rect.length) } 从上面的例子看到

换个语言学一下 Golang (4)——变量与常量

天涯浪子 提交于 2020-04-06 20:32:33
一、变量定义 所谓的变量就是一个拥有指定 名称 和 类型 的 数据存储位置 。 //看一个例子 package main import ( "fmt" ) func main() { var x string = "hello world" fmt.Println(x) } View Code 变量的定义首先使用var关键字,然后指定变量的名称x,再指定变量的类型string,在本例中,还对变量x进行了赋值,然后在命令行输出该变量。Go这种变量定义的方式和其他的语言有些不同,但是在使用的过程中,你会逐渐喜欢的。当然上面的变量定义方式还可以如下,即先定义变量,再赋值。 var x string x = "hello world" 或者是直接赋值,让Go语言推断变量的类型。如下: var x = "hello world" 当然,上面变量的定义还有一种 快捷方式 。如果你知道变量的初始值,完全可以像下面这样定义变量,完全让 Go来推断语言的类型 。这种定义的方式连关键字 var 都省略掉了。 x := "hello world" 注意:上面这种使用 := 方式定义变量的方式 只能用在函数内部 。 package main import ( "fmt" ) x:="hello world" func main() { y := 10 fmt.Println(x) fmt.Println

[golang note] 匿名组合

∥☆過路亽.° 提交于 2020-04-06 19:15:58
匿名组合 golang也提供了继承机制,但采用组合的文法,因此称为匿名组合。与其他语言不同, golang很清晰地展示出类的内存布局是怎样的。 • 非指针方式组合 ▶ 基本语法 // 基类 type Base struct { // 成员变量 } func (b *Base) 函数名(参数列表) (返回值列表) { // 函数体 } // 派生类 type Derived struct { Base // 成员变量 } func (b *Derived) 函数名(参数列表) (返回值列表) { // 函数体 } ▶ 继承规则 √ 在派生类没有改写基类的成员方法时,相应的成员方法被继承。 √ 派生类可以直接调用基类的成员方法,譬如基类有个成员方法为Base.Func(),那么Derived.Func()等同于Derived.Base.Func() √ 倘若派生类的成员方法名与基类的成员方法名相同,那么基类方法将被覆盖或叫隐藏,譬如基类和派生类都有成员方法Func(),那么Derived.Func()将只能调用派生类的Func()方法,如果要调用基类版本,可以通过Derived.Base.Func()来调用。 ▪ 示例如下 package main import "fmt" type Base struct { } func (b *Base) Func1() { fmt

Golang-数据类型-string类型

怎甘沉沦 提交于 2020-04-06 10:52:16
基本介绍    字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本 案例演示    string 使用注意事项和细节   1)Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本,这样 Golang 统一使用 UTF-8 编码,中文乱码问题不会再困扰程序员。   2)字符串一旦赋值了,字符串就不能修改了:在 Go 中字符串是不可变的。      3)字符串的两种表示形式     (1)双引号, 会识别转义字符     反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果     【案例演示】        4)字符串拼接方式       5)当一行字符串太长时,需要使用到多行字符串,可以如下处理    来源: https://www.cnblogs.com/Essaycode/p/12640738.html

golang slice的append的“坑”

落爺英雄遲暮 提交于 2020-04-06 03:31:15
golang中的slice有一个很多人都知道的“坑”: package main func main () { //初始化两个slice s1 := make ([] int , 3 , 4 ) s2 := s1 [: 2 ] s2 [ 0 ] ++ println ( s1 [ 0 ] == s2 [ 0 ]) //true s1 = append ( s1 , 0 ) s2 [ 0 ] ++ println ( s1 [ 0 ] == s2 [ 0 ]) //true s1 = append ( s1 , 0 ) s2 [ 0 ] ++ println ( s1 [ 0 ] == s2 [ 0 ]) //false } s2是s1的slice(或者说是从s1衍生出的切片),原本二者引用同一片空间(对s2[0]的改动同步到了s1[0]),但随着s1的不断append,两次之后二者就“脱节”了,之后对一个的元素改动就不能同步到另一个了 对于熟悉slice机制的人来说这没什么秘密可言,原理差不多是这样: 初始化时,s1的make创建了一个匿名数组,大小为4,s1引用前三个元素,s2通过s1[:2]的切片引用到了数组的前两个元素,这时候对s2[0]的改动自然会影响到s1[0](第一个true): 第一次对s1 append时,由于s1的cap是4,所引用的数组切片后面还有空间

Golang-数据类型-整形

℡╲_俬逩灬. 提交于 2020-04-06 02:01:26
1、数据类型的基本介绍    1.1、 整数类型   1.1.1整数的各个类型         int 的无符号的类型:         int 的其它类型的说明         1.1.2整型的使用细节   1)Golang 各整数类型分:有符号和无符号,int uint 的大小和系统有关。   2)Golang 的整型默认声明为 int 型      3)如何在程序查看某个变量的字节大小和数据类型 (使用较多)      4)Golang 程序中整型变量在使用时,遵守保小不保大的原则,即:在保证程序正确运行下,尽量使用占用空间小的数据类型。【如:年龄】      5)bit: 计算机中的最小存储单位。byte:计算机中基本存储单元。[二进制再详细说] 1byte = 8 bit 来源: https://www.cnblogs.com/Essaycode/p/12640204.html

golang Import path路径配置

一曲冷凌霜 提交于 2020-04-05 18:42:41
go command在获取源码包时,会根据代码中的import path来导向该通过何种方式下载 参考: https://golang.org/cmd/go/#hdr-Remote_import_paths go command内置支持一些常见的站点,比如Bitbucket或GitHub等,会有内置对应的取包方式,比如 import "github.com/user/project" go command会用Git去获取GitHub源 Bitbucket (Git, Mercurial) import "bitbucket.org/user/project" import "bitbucket.org/user/project/sub/directory" GitHub (Git) import "github.com/user/project" import "github.com/user/project/sub/directory" Launchpad (Bazaar) import "launchpad.net/project" import "launchpad.net/project/series" import "launchpad.net/project/series/sub/directory" import "launchpad.net/~user

Golang数组指针和指针数组

♀尐吖头ヾ 提交于 2020-04-04 22:49:49
数组很简单,有PHP基础一看就会,和PHP数组大不一样,不同的就是只有数字索引key,并且要指定类型 声明和初始化示例: package main import "fmt" func main() { // 声明 var arr1 [5]int arr1 = [5]int{1,2,3,4,5} // 声明并初始化 var arr2 [5]int = [5]int{1,2,3,4,5} // 直接初始化,只能在函数里 arr3 := [5]int{1,2,3,4,5} fmt.Println(arr1, arr2, arr3) } 数组循环,主要是for 和 for range 具体网上搜索一些会有很多教程,本文就不详细说,现在来点难的: 数组指针和指针数组: package main import "fmt" // 声明整形数组指针类型,表示该类型变量里存储的是一个数组的首地址 type arrPoint *[6]int func main() { // 声明并初始化数组,大小为6个元素整形数组,前5个数字是0,最后一个2 var a = [6]int{5: 2} var a1 = [6]int{5: 3} // 数组指针,变量的内容是数组的地址 var b arrPoint = &a var b1 arrPoint = &a1 // 指针数组,大小为2元素类型为arrPiont

Golang入门教程(一)GOPATH与工作空间(Windows)

被刻印的时光 ゝ 提交于 2020-04-04 20:50:14
https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/01.2.md Windows 环境: 下面我就以mymath为例来讲述如何编写应用包: cd $GOPATH/src mkdir mymath // 我的环境:$GOPATH = c:\mygo 新建文件sqrt.go,内容如下: // $GOPATH/src/mymath/sqrt.go源码如下: package mymath func Sqrt(x float64) float64 { z := 0.0 for i := 0; i < 1000; i++ { z -= (z*z - x) / (2 * x) } return z } 在默认的src文件夹下面的这个mypath是我自己新建的 编译应用 上面我们已经建立了自己的应用包,如何进行编译安装呢?有两种方式可以进行安装 1、只要进入对应的应用包目录,然后执行 go install ,就可以安装了 2、在任意的目录执行如下代码 go install mymath 红色的表示没有新建这个mypath文件夹和sqrt.go文件,绿色的是我新建好后运行的命令,没有报错误 安装完之后,我们可以进入如下目录 cd $GOPATH/pkg/${GOOS}_${GOARCH} /