随笔分类 - Go程序设计语言
摘要:Go语言提供了一种机制,在编译时不知道类型的情况下,可更新变量、在运行时查看值、调用方法以及直接对它们的布局进行操作,这种机制称为反射(reflection) 为什么使用反射 reflect.Type和reflect.Value 反射功能由reflect包提供,它定义了两个重要的类型:Type和Va
阅读全文
摘要:只运行一次 懒汉式,线程安全 var once sync.Once var obj *SingletonObj func GetSingletonObj() *SingletonObj { once.Do(func() { fmt.Println("Create Singleton obj.") o
阅读全文
摘要:竞态 考虑一个能在串行程序中正确工作的函数,如果这个函数在并发调用时仍然能正确工作,那么这个函数是并发安全(concurrency-safe)的,在这里并发调用是指,在没有额外同步机制的情况下,从两个或者多个goroutine同时调用这个函数 对于绝大部分变量,如要回避并发访问,要么限制变量只存在于
阅读全文
摘要:goroutine Go有两种并发编程的风格 goroutine和通道,它们支持通信顺序进程(CSP),CSP是一个并发的模式,在不同的执行体(goroutine)之间传递值,但是变量本身局限于单一的执行体 当一个程序启动时,只有一个goroutine来调用main函数,称它为主goroutine。
阅读全文
摘要:接口类型是对其他类型行为的概括与抽象。通过使用接口,可以写出更加灵活和通用的函数,这些函数不用绑定在一个特定的类型实现上 Go语言的接口是隐式实现,对于一个具体的类型,无须声明它实现了哪些接口,只要提供接口所必需的方法即可。这种设计可以无需改变已有类型的实现,就可以为这些类型创建新的接口,对于那些不
阅读全文
摘要:方法声明 方法的声明和普通函数的声明类似,只是在函数名字前面多了一个参数,这个参数把这个方法绑定到这个参数对应的类型上 package geometry import ( "fmt" "math" ) type Point struct { X, Y float64 } //普通的函数 func D
阅读全文
摘要:1、Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令(译注:静态编译)。Go语言提供的工具都通过一个单独的命令go调用,go命令有一系列子命令。最简单的一个子命令就是run。这个命令编译一个或多个以.go结尾的源文件,链接库文件,并运行最终生成的可执行文件。 2、Go语言
阅读全文
摘要:数组 长度固定,类型特定 数组的长度是数组类型的一个组成部分,因此[3]int和[4]int是两种不同的数组类型。数组的长度必须是常量表达式,因为数组的长度需要在编译阶段确定 数组的初始化可以指定一个索引和对应值列表的方式初始化 package main import "fmt" func main
阅读全文
摘要:Go语言数据类型分类:基础类型、复合类型、引用类型和接口类型 基础类型:数字、字符串和布尔型 整型 有符号和无符号的整数运算:int8、int16、int32、int64四种不同大小的有符号整数类型 uint8、uint16、uint32、uint64四种无符号整数类型 Unicode字符rune类
阅读全文
摘要:Go语言的基础组成-->包声明/引入包/函数/变量/语句&表达式/注释 package main -->定义了包名,必须在源文件中非注释的第一行指明这个文件属于哪个包。package main表示一个可独立执行的程序,每个Go应用程序都包含一个名为main的包 import "fmt" -->告诉G
阅读全文

浙公网安备 33010602011771号